Tenho um conjunto de dados simples com 2 colunas:
- A coluna A contém um "Valor", mas esse "Valor" pode estar vazio.
- A coluna B contém uma "Média", nunca vazia.
Preciso de uma fórmula para calcular uma soma sobre todas as linhas (linhas marcadas com "i"): SUM(if Ai not empty, Ai-Bi)
.
Tentei usar SUMIF(), mas não sei como solicitar uma operação envolvendo múltiplas colunas usando intervalos, depois de verificar se Ai<>"".
[Edição para esclarecimento:]
O que eu quero é: = IF(A1<>"", A1-B1) + IF(A2<>"", A2-B2) + ...
Mas sem copiar e colar manualmente para cada linha!
O motivo pelo qual você está tendo problemas com
SUMIF
é porqueSUMIF
requer que o primeiro/terceiro parâmetro seja um intervalo, então você não pode executar nenhuma operação, comoA:A-B:B
, sem que ele deixe de ser um intervalo.Você ainda pode usar
SUMIF
a soma condicional de cada coluna e subtraindo uma da outra.=SUMIF(A:A,"<>")-SUMIF(A:A,"<>",B:B)
No entanto, acho que é um bom exemplo para usar
SUMPRODUCT
. Pense em seusSUMPRODUCT
parâmetros como você faria com seusFILTER
parâmetros. Use o primeiro parâmetro como os valores que você quer somar. Os parâmetros restantes serão seus condicionais, retornandoTRUE/FALSE
ou1/0
.=SUMPRODUCT(A:A - B:B, A:A<>"")
Você pode obter o mesmo resultado usando
SUM
eFILTER
.=SUM(FILTER(A:A - B:B, A:A<>""))
Abordagem alternativa usando Byrow
Você também pode obter o resultado desejado usando a fórmula abaixo:
Fórmula de amostra
=SUM(BYROW(A2:A, LAMBDA(x, IF(x<>"", x - INDEX(B:B, ROW(x)), 0))))
Saída de amostra
Referências:
EDIFÍCIO
LAMBDA
ÍNDICE
Tente:
=SOMA(FÓRMULAMATRIZ(SE(A:A<>"", A:AB:B, 0)))