Erro de cálculo do índice/somaproduto

Erro de cálculo do índice/somaproduto

Estou trabalhando em um problema do Excel há quase 24 horas. Tenho uma fórmula que quase faz o que eu quero mas não está retornando o que imagino que deveria retornar:

=INDEX(Data!D:D,SUMPRODUCT((Data!C:C=Total!A5)*(Data!A:A="Total")*(Data!B:B="Total")*(ROW(Data!D:D))))

Imagino a linha para indexar a coluna D nos Dados! planilha seja a linha real em que a correspondência ocorre, mas PARA CADA VALOR, MAS O PRIMEIRO VALOR, o valor retornado vem de 3 linhas abaixo dele.

Sim, então para a primeira célula em que aplico essa fórmula, recebo de volta o valor correto da Coluna D de Dados! Mas, para cada célula subsequente com a fórmula, estou recuperando o valor na Coluna D de Dados! 3 linhas abaixo da partida.

Tentei todas as combinações de subtração de 3 da fórmula (para retornar a linha correta), mas sem sucesso. Mesmo assim isso não explicaria porque a primeira célula em que a fórmula é aplicada retorna o valor esperado!

Toda e qualquer ajuda é muito apreciada, claro...

Responder1

Não está totalmente claro para mim se você deseja encontrar oprimeiro, segundo, etc.corresponde a Total!A5 ou se você estiver tentando encontrar a primeira correspondência para A5, então a primeira correspondência para A6, etc. Esta solução proposta é para a primeira.

Prefiro usar o método de exclusão matemática para capturar múltiplos retornos nas partidas. Se você eliminar o que não corresponde, o que resta deverá ser o conjunto de resultados correspondentes. Também estou impaciente o suficiente para achar o atraso de cálculo das referências de colunas completas SUMPRODUCTirritante, então reduzi suas referências de intervalo para as primeiras aproximadamente 1 mil linhas.

=IFERROR(INDEX(Data!$D$2:$D$999, SMALL(INDEX(ROW($1:$998)+((Data!$C$2:$C$999<>Total!$A$5)+(Data!$A$2:$A$999<>"Total")+(Data!$B$2:$B$999<>"Total"))*1E+99,,),ROW(1:1))),"")

Este é um padrão (não-matriz) Fórmula. Preencha conforme necessário para capturar todos os retornos correspondentes. Ao transcrever isso para seus próprios propósitos, lembre-se de que esse ROW(1:998)é oposição dentro Data!D2:D999, não o número real da linha na planilha. ROW(1:1)é simplesmente um contador que aumenta conforme você preenche. Às vezes, a COUNTIFé mais apropriado e pode ser usado para capturar vários retornos correspondentes em vários valores de pesquisa.

informação relacionada