Ir ao conteúdo

Somar por filtro


Ir à solução Resolvido por Visitante,

Posts recomendados

Postado

Olá a todos,

 

Preciso da vossa ajuda para pôr a funcionar o exemplo que envio em anexo.

 

Na folha 2 coloquei 3 exemplos do cálculo que deve ser feito, dependendo das variáveis que pretendo filtrar.

 

Agradeço antecipadamente!

Somar por filtro.xlsx

Postado

Olá Patropi,

 

A ideia é esta, mas pretendo uma fórmula que some os valores para todas as combinações:

 

- só nome

- só tipo

- só descritivo

- nome e tipo

- nome e descritivo

- tipo e descritivo

- etc...

 

Pretendo analisar só num quadro.

  • Membro VIP
Postado

Mph

 

Para fazer com você deseja, cada linha filtrar um dado diferente, eu não sei fazer, acredito que só com a utilização de macros.

Vou deixar para os colegas te ajudarem, pois VBA não é minha praia.

 

[]s

  • Curtir 1
Postado

Caro Patropi,

 

Tens me ajudado e muito!!

 

Peço desculpa por não ter utilizado da melhor maneira a funcionalidade "curtir".

 

Mais uma vez agradeço a rapidez e disponibilização de sabedoria que caracteriza as tuas respostas.

 

abraço

  • Solução
Postado

Tenho apenas uma questão:

 

Se pretender várias somas, resultado de combinações diferentes, ao definir os critérios na fórmula, tenho sempre de incluir um cabeçalho para cada combinação?

 

 

@Mph, se quiser experimentar esta solução que utiliza UDF, instale o código abaixo em um módulo comum, assim:

1. copie o código daqui

2. a partir da planilha em que estão os dados tecle 'Alt+F11' para acessar o editor de VBA

3. no menu do editor >> Inserir >> Módulo

4. cole o código na janela em branco que vai se abrir

5. feito! 'Alt+Q' para retornar para a planilha e testar

6. coloque a função =somacs() na primeira célula abaixo da célula com o texto "valor", no caso do exemplo do post #5 coloque na célula "L4" da planilha "Folha2", em seguida arraste para baixo até onde quiser.

 

Function somacs()  Dim LR As Long, strC As String, vCaller As range, ws As Worksheet, x As String   application.Volatile   Set vCaller = application.Caller: Set ws = Sheets("Folha1")   LR = ws.Cells(Rows.Count, 1).End(xlUp).Row   x = application.Caller.Parent.Name   If application.CountA(vCaller.Offset(, -3).Resize(, 3)) = 0 Then    somacs = 0: Exit Function   End If   If vCaller.Offset(, -3).Value <> "" Then strC = "Folha1!B2:B" & LR & "," & x & "!" & vCaller.Offset(, -3).Address(0, 0)   If vCaller.Offset(, -2).Value <> "" Then    If strC = "" Then     strC = "Folha1!C2:C" & LR & "," & vCaller.Offset(, -2).Address(0, 0)    Else: strC = strC & ",Folha1!C2:C" & LR & "," & x & "!" & vCaller.Offset(, -2).Address(0, 0)    End If   End If   If vCaller.Offset(, -1).Value <> "" Then    If strC = "" Then     strC = "Folha1!D2:D" & LR & "," & x & vCaller.Offset(, -1).Address(0, 0)    Else: strC = strC & ",Folha1!D2:D" & LR & "," & x & "!" & vCaller.Offset(, -1).Address(0, 0)    End If   End If   somacs = Evaluate("=SUMIFS(Folha1!E2:E" & LR & "," & strC & ")")End Function
Postado

Caro Osvaldo,

 

Agradeço desde já a tua ajuda.

 

Neste momento não posso experimentar, mas logo que possa dou retorno!

  • 2 semanas depois...
Postado

Caro Osvaldo,

 

Consegui finalmente oportunidade para testar e era isto mesmo que eu precisava.

 

Mais uma vez, agradeço a vossa ajuda!

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...