Página 1 de 1

SUMIFS

Enviado: 29 Jul 2019 às 22:43
por Martins
Boa Noite

Estou com problema de sintaxe na minha função SUMIFS. Alguém consegue me ajudar a identificar o erro por favor?
Código: Selecionar todos
Plan1.Range("D1").Value = WorksheetFunction.SumIfs(PLAN1.RANGE("D3:D8"), (plan1.range("C3:C8"),(plan1.range("D1"), (plan1.range("E3:E8"),(PLAN1.RANGE("D"))))))

Re: SUMIFS

Enviado: 30 Jul 2019 às 00:46
por Jimmy
Martins,

Se precisa especificar a planilha, tente assim:
Código: Selecionar todos
Set Plan1 = Sheets("Planilha1")
Plan1.Range("F5").Value = WorksheetFunction.SumIfs(Plan1.Range("D3:D8"), Plan1.Range("C3:C8"), Plan1.Range("D1"), Plan1.Range("E3:E8"), "D")
ou se não precisa, assim:
Código: Selecionar todos
Range("F5").Value = WorksheetFunction.SumIfs(Range("D3:D8"), Range("C3:C8"), Range("D1"), Range("E3:E8"), "D")
Você está jogando o resultado disso na célula D1, porém, a D1 está sendo usada como critério do SomaSe.
Seria melhor jogar esse resultado em uma célula diferente, como:
Código: Selecionar todos
Range("F4").Value = WorksheetFunction...
Jimmy San Juan

Re: SUMIFS

Enviado: 30 Jul 2019 às 12:13
por Martins
Oi Jimmy.

Excelente explicação.

Quando fui aplicar na prática tive alguns problemas tal como:

Como cada linha tem um critério apliquei uma macro com esta fórmula e depois apliquei um autofill, mas não consegui fazer que o excel entenda que cada linha tem um critério.

Depois apliquei uma outra macro para fazer a contagem por linha, mas também não consegui.

Resumindo, consegues me ajuda por favor? Como sou novo em vba ainda peco em coisas fáceis.

Re: SUMIFS

Enviado: 01 Ago 2019 às 12:53
por Martins
Oi Senhores.

Será que alguém consegue me ajudar?

Tenho duas macros a macro "somases1" esta calcula corretamente, mas o cálculo acontece na célula "D7" da plan2. Preciso que percorra as linhas abaixo, por exemplo D8 em diante.

A única coisa que muda é o critério1 que será "B7, B8, B9...... da plan2.

Tentei aplicar um autofill, mas não adiantou, então fiz uma outra macro a "somases2" para percorrer as linhas, mas não funcionou.

Re: SUMIFS

Enviado: 01 Ago 2019 às 13:35
por osvaldomp
Veja se ajuda.
Código: Selecionar todos
Sub Teste()
 With Range("D7:D" & Cells(Rows.Count, 2).End(xlUp).Row)
  .Formula = "=SUMIFS(Plan1!D$2:D$9,Plan1!B$2:B$9,B7,Plan1!E$2:E$9,""D"")"
  .Value = .Value
 End With
End Sub

Re: SUMIFS

Enviado: 01 Ago 2019 às 17:23
por Jimmy
Olá Martins,

Em termos de instruções, a macro não tem problemas, mas para saber porque não está dando o resultado esperado, você teria que dizer qual é o resultado esperado. O problema parece simples de resolver, mas preciso saber o que esperas da macro.

Algumas observações:

Você está usado o WorksheetFunction para realizar o SomaSe. Esse comando faz a soma, pega o valor e disponibiliza para a macro jogar numa célula (ou numa variável, ou exibir na tela, etc). A célula recebe o resultado da soma, e não a fórmula que gerou a soma.
Execute os comando abaixo, e compare os resultados em termos de conteúdo da célula:
Range("A1").Value = "=Sum(1,2,3)"
Range("B1").Value = WorksheetFunction.Sum(1, 2, 3)
Me diga se quer colocar na célula o resultado da soma, ou a fórmula SOMASE que fará a soma.

Macro SOMASES1

O critério usado para fazer a soma é fixo: o valor da faixa Plan1"B2:B9" tem que ser igual a Plan2"B7", e o da faixa Plan1"E2:E9" deve ser igual a "D". O resultado é o valor 1000, que vem da Plan1”D2”, e é colocado na Plan1“D7”.

Ao copiar para baixo, como é um valor e não uma fórmula, o valor é repetido.

Macro SOMASES2

O critério usado é o mesmo, o resultado é o também o mesmo (1000(, que vem da Plan1”D2”, e é colocado na Plan1“D7” concatenado com “i”. Para i = 2, o resultado é colocado na célula D72. Quando i = 5, na D75 e assim por diante.

Descreva o que pretende que a macro faça, e ajustamos.

Jimmy San Juan

Re: SUMIFS

Enviado: 02 Ago 2019 às 07:29
por Martins
Osvaldo atendeu perfeitamente. Muito obrigado.

Jimmy desculpe se não consegui ser claro. Agradeço seu retorno.