Uma outra sugestão, ligeiramente mais legível.
=SUM(IFERROR((YEAR(C:C)=2015)*E:E,0))
Use isso como uma função de matriz (Pressione Ctrl + Deslocamento + Digite , não apenas Digite )
Eu tenho duas colunas, uma com uma data e outra com valores, e quero somar todas as células, onde o ano da data é o ano desejado. Meu problema é que eu tenho cabeçalhos na tabela, e eu não quero definir manualmente a primeira e a última linha a serem consideradas, mas pegar todas as linhas ...
Isso falha com o erro #VALUE!
:
=SUMPRODUCT((YEAR(C:C)=2015)*(E:E))
Isso funciona:
=SUMPRODUCT((YEAR(C2:C1000)=2015)*(E2:E1000))
Em C1
e E1
, tenho cabeçalhos (texto). Eles são formatados como texto e em fórmulas simples, o suficiente para tê-los excluídos da fórmula, mas isso não está funcionando com SUMPRODUCT
...
Existe uma solução melhor?
Is there a better solution?
Sim, existe.
Use as tabelas (selecione o seu intervalo e, em seguida: Inserir - Tabela), e aí você pode escrever sua fórmula como:
=SUMPRODUCT((YEAR(Table1[HeaderC])=2015)*(Table1[HeaderE]))
Claro, em vez de HeaderC
, escreva o cabeçalho real na coluna C, e o mesmo para a coluna E.
Logo após postar, tive uma ideia e funciona:
Solução:
=SUMPRODUCT((YEAR(INDIRECT("C2:C"&(MATCH(0;E:E;-1));TRUE))=2015)*(INDIRECT("E2:E"&(MATCH(0;E:E;-1));TRUE)))
A função match encontra a última célula com um valor > = 0, para mim isso está funcionando bem. Dependendo do caso de uso, você teria que ajustar a função de correspondência ...