=SOMARPRODUTO(B2:B6;C2:C6) multiplica cada quantidade de B pelo preço ao lado em C e depois soma os resultados. Ela dá o total do pedido em uma célula, sem uma coluna de totais por linha. A SOMARPRODUTO se chama SUMPRODUCT em inglês; a tabela mostra as fórmulas em inglês, com vírgulas, e também aceita a forma em português, com ponto e vírgula.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Item | Qty | Price | Line total | Total | |
| 2 | Pen | 4 | $1.50 | $6.00 | $30.70 | |
| 3 | Notebook | 2 | $3.25 | $6.50 | $30.70 | |
| 4 | Folder | 5 | $0.80 | $4.00 | ||
| 5 | Stapler | 1 | $7.90 | $7.90 | ||
| 6 | Marker | 3 | $2.10 | $6.30 |
=SOMARPRODUTO(B2:B6;C2:C6)F2 e F3 mostram o mesmo $30.70. Os totais por linha da coluna D estão ali só para mostrar o que a SOMARPRODUTO faz: 4 × 1,50, 2 × 3,25 e assim por diante, depois uma SOMA. Mude uma quantidade e os dois totais acompanham.
Sintaxe da SOMARPRODUTO
=SUMPRODUCT(array1, [array2], [array3], ...)
- Cada matriz é um intervalo ou um cálculo que produz um, e todas precisam ter o mesmo tamanho, ou a SOMARPRODUTO retorna #VALOR! (
#VALUE!em inglês; a tabela mostra os nomes de erro em inglês). - Com duas ou mais matrizes, os valores na mesma posição são multiplicados e depois os produtos são somados.
- Com uma matriz ela só soma, e é isso que faz funcionar as formas com condição abaixo:
=SOMARPRODUTO((A2:A7="North")*C2:C7)tem uma matriz, já multiplicada. - Texto passado como argumento próprio vale 0. Texto dentro de um cálculo com
*causa #VALOR!.
A SOMARPRODUTO trabalha com matrizes em todas as versões do Excel sem Ctrl+Shift+Enter (Cmd+Shift+Enter no Mac), e por isso era a ferramenta padrão para somas condicionais antes de a SOMASES existir, e ainda é nos casos que a SOMASES não resolve.
SOMARPRODUTO com condições
Uma comparação sobre um intervalo, A2:A7="North", retorna um VERDADEIRO ou FALSO por linha. Multiplicar por ela mantém as linhas em que é VERDADEIRO (×1) e zera as outras (×0). Multiplique duas comparações para ter um E.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Region | Product | Sales | Formula | Result | |
| 2 | North | Apple | 120 | North sales | 230 | |
| 3 | South | Pear | 45 | North Apple sales | 150 | |
| 4 | North | Pear | 80 | Count North | 3 | |
| 5 | East | Apple | 55 | Count over 50 | 4 | |
| 6 | South | Apple | 200 | Without -- | 0 | |
| 7 | North | Apple | 30 |
=SOMARPRODUTO((A2:A7="North")*C2:C7)F2 soma as três linhas de North: 230. F3 multiplica duas condições, então uma linha só conta quando as duas são verdadeiras: 150. Para contar em vez de somar, deixe os valores de fora e transforme o VERDADEIRO/FALSO em números com -- (dois sinais de menos): F4 conta 3 linhas de North. F6 mostra por que o -- importa: a SOMARPRODUTO não soma valores VERDADEIRO, então a fórmula sem ele retorna 0.
As quatro primeiras dão os mesmos resultados que a SOMASE, a SOMASES e o CONT.SE. A próxima seção é onde a SOMARPRODUTO mostra o seu valor.
Condições que a SOMASES não consegue expressar
A SOMASES compara uma coluna com um critério fixo. Ela não consegue pegar o mês de uma data, comparar duas colunas entre si ou multiplicar quantidade por preço antes de somar. A SOMARPRODUTO consegue, porque cada condição é um cálculo comum.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Region | Date | Target | Actual | Formula | Result | |
| 2 | North | 2026-01-05 | 100 | 120 | February sales | 135 | |
| 3 | South | 2026-01-12 | 60 | 45 | Rows over target | 3 | |
| 4 | North | 2026-02-03 | 90 | 80 | North or East sales | 285 | |
| 5 | East | 2026-02-18 | 50 | 55 | Above target by | 75 | |
| 6 | South | 2026-03-02 | 150 | 200 | |||
| 7 | North | 2026-03-20 | 40 | 30 |
=SOMARPRODUTO((MÊS(B2:B7)=2)*D2:D7)- G2 pega o MÊS (MONTH em inglês) de cada data e mantém as linhas de fevereiro: 80 + 55 = 135. Isso soma fevereiro de qualquer ano; acrescente
*(ANO(B2:B7)=2026)para um ano só. - G3 compara duas colunas linha a linha e conta as linhas em que Actual supera Target.
- G4 é um OU: somar duas condições dá 1 quando qualquer uma é verdadeira (2 quando as duas são, e é por isso que o
>0está ali). North ou East: 285. - G5 soma quanto cada linha passou da meta, só nas linhas que passaram.
SOMARPRODUTO para totais e médias ponderados
Quantidade vezes preço é um total ponderado, e dá para acrescentar condições a ele. A mesma ideia dividida pela soma dos pesos dá uma média ponderada: =SOMARPRODUTO(B2:B6;C2:C6)/SOMA(B2:B6) é o preço médio por item vendido.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Region | Product | Qty | Price | Formula | Result | |
| 2 | North | Apple | 10 | $1.20 | North revenue | $31.00 | |
| 3 | South | Pear | 4 | $1.50 | All revenue | $61.00 | |
| 4 | North | Pear | 6 | $1.50 | Average price per item | $1.36 | |
| 5 | East | Apple | 8 | $1.20 | |||
| 6 | South | Apple | 12 | $1.20 | |||
| 7 | North | Plum | 5 | $2.00 |
=SOMARPRODUTO((A2:A7="North")*C2:C7*D2:D7)North vendeu 10 maçãs a $1.20, 6 peras a $1.50 e 5 ameixas a $2.00, então G2 mostra $31.00. A média simples dos preços trataria a ameixa como se fosse vendida tanto quanto a maçã; G4 pondera cada preço pela sua quantidade.
Prática: faturamento com uma condição
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Region | Product | Qty | Price | Formula | Result | |
| 2 | North | Apple | 10 | $1.20 | South revenue | ||
| 3 | South | Pear | 4 | $1.50 | |||
| 4 | North | Pear | 6 | $1.50 | |||
| 5 | East | Apple | 8 | $1.20 | |||
| 6 | South | Apple | 12 | $1.20 | |||
| 7 | North | Plum | 5 | $2.00 |
Sua vez: Calcule o faturamento de South: quantidade vezes preço, só nas linhas de South. Escreva a fórmula em G2.
SOMARPRODUTO ou SOMASES, e os dois erros dela
| Condição | SOMASES | SOMARPRODUTO |
|---|---|---|
| Coluna igual a um valor | =SOMASES(C2:C7;A2:A7;"North") | =SOMARPRODUTO((A2:A7="North")*C2:C7) |
| Contém um texto | =SOMASES(C2:C7;B2:B7;"*app*") | =SOMARPRODUTO(ÉNÚM(LOCALIZAR("app";B2:B7))*C2:C7) |
| Mês de uma data | não dá diretamente | =SOMARPRODUTO((MÊS(B2:B7)=2)*D2:D7) |
| Coluna contra coluna | não dá | =SOMARPRODUTO(--(D2:D7>C2:C7)) |
| Quantidade × preço | não dá | =SOMARPRODUTO(C2:C7;D2:D7) |
Prefira a SOMASES sempre que ela der conta do trabalho. Ela é mais legível, mais rápida em dezenas de milhares de linhas e aceita colunas inteiras. =SOMARPRODUTO((A:A="North")*C:C) multiplica mais de um milhão de linhas e retorna #VALOR! assim que chega ao texto do cabeçalho em C1, então passe à SOMARPRODUTO intervalos exatos como A2:A500.
Os dois erros que você vai encontrar:
- #VALOR! por intervalos de tamanhos diferentes.
=SOMARPRODUTO(B2:B6;C2:C7)falha. Todos os intervalos precisam cobrir as mesmas linhas. - #VALOR! por texto em um intervalo multiplicado. Um cabeçalho ou um "n/a" dentro de
C2:C7quebra(A2:A7="North")*C2:C7, porque texto não pode ser multiplicado. Comece o intervalo abaixo do cabeçalho, ou passe os valores como argumento separado:=SOMARPRODUTO(--(A2:A7="North");C2:C7)trata o texto em C como 0.
Perguntas frequentes
O que a SOMARPRODUTO faz no Excel?
Ela multiplica intervalos linha a linha e soma os produtos. =SOMARPRODUTO(B2:B6;C2:C6) é B2C2 + B3C3 + ... + B6*C6, por exemplo quantidade vezes preço somados no total de um pedido.
Como usar a SOMARPRODUTO com uma condição?
Multiplique por uma comparação: =SOMARPRODUTO((A2:A7="North")*C2:C7) soma C2:C7 nas linhas de North. A comparação dá VERDADEIRO ou FALSO, que viram 1 ou 0 na multiplicação.
O que significa -- na SOMARPRODUTO?
São dois sinais de menos, que transformam VERDADEIRO e FALSO em 1 e 0. =SOMARPRODUTO(--(C2:C7>50)) conta os valores acima de 50. Sem eles, a SOMARPRODUTO trata VERDADEIRO/FALSO como 0 e retorna 0.
Devo usar SOMARPRODUTO ou SOMASES?
Use a SOMASES quando os critérios dela conseguem expressar a condição: ela é mais fácil de ler e mais rápida em intervalos grandes. Use a SOMARPRODUTO quando a condição precisa de um cálculo, como o mês de uma data, uma coluna comparada com outra, ou quantidade vezes preço.
Por que a SOMARPRODUTO retorna #VALOR!?
Os intervalos têm tamanhos diferentes (B2:B6 com C2:C7), ou um intervalo multiplicado com * contém texto. Deixe todos os intervalos do mesmo tamanho e passe os intervalos com texto como argumentos separados, o que trata o texto como 0.