Ir ao conteúdo
  • Cadastre-se

Somar por filtro


Ir à solução Resolvido por Visitante,

Posts recomendados

  • Membro VIP

Bom dia Mph

 

Eu achei estranho você desejar um filtro separado, mas como no teu exemplo estava assim, fiz segundo teu exemplo.

 

Fiz o que você deseja usando a função BDSOMA.

 

16_11_15_Somar com critérios_Patropi.xlsx

 

Se foi útil, clique em Curtir

 

[]s

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Caro Patropi,

 

Excelente!

 

Era exactamente isto que precisava.

 

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?

 

Exemplo em anexo.

16_11_15_Somar com critérios_Patropi (vários crit.).xlsx

Link para o comentário
Compartilhar em outros sites

  • Solução

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
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!