Acho que a questão aqui é que a sugestão dada nesse link para lidar com os resultados de fórmulas em linhas além do número de retornos esperados é simplesmente envolver a fórmula em algum tipo de cláusula IFERROR.
No entanto, essa configuração é extremamente ineficiente, especialmente se o conjunto de dados em questão é dinâmico e potencialmente expansível.
O ponto é que, se você tiver uma configuração como:
= IFERROR ([ some_large_array_formula ], "")
que se destina a ser copiado para baixo um número suficiente de linhas, de modo a encapsular todos os retornos desejados, então você será confrontado com duas opções.
Primeiramente, você pode realizar alguns cálculos para determinar com precisão quantos retornos você terá em um determinado momento e, em seguida, arrastar essa fórmula para baixo nesse número de linhas. Obviamente, isso não é o ideal, ainda menos se você tiver, como eu disse, um conjunto de dados que muda dinamicamente.
Em segundo lugar, podemos copiar as fórmulas para um número arbitrariamente grande de linhas, garantindo a cobertura de todos os retornos possíveis, mesmo que nosso conjunto de dados seja expandido em algum momento futuro e, portanto, não precisemos nos preocupar novamente.
Obviamente, este segundo método é preferível na prática. O problema com a construção IFERROR (pior ainda se você estiver em 2003 ou antes e tiver que usar uma cláusula IF (ISERROR) repetida) é que, nas linhas para as quais a fórmula é copiada além do que é efetivamente necessário, não há nada para evitar que a grande fórmula de matriz com muitos recursos calcule desnecessariamente.
O ponto é que, na construção acima, mesmo em linhas além daquelas que contêm nosso último retorno esperado, o Excel ainda precisa gastar todo o recurso para calcular a parte da fórmula de matriz antes de decidir se ela é de fato erro ou não.
Longe, muito melhor do que esta inactiva abordagem IFERROR - que infelizmente é quase universalmente recomendada para esta configuração em torno das várias fontes na internet - é, como James salienta, usar uma única célula "auxiliar" para determinar primeiro o número de linhas que esperamos ter retornado e, em vez disso, faça referência a isso na fórmula.
Assim, por exemplo, se os dados postados estavam em A1: C10 (com cabeçalhos na linha 1) e colocamos, e. NN em E1 e OUT em F1, primeiro introduziríamos uma única fórmula não-array em, e. G1:
= SUMPRODUCT (0+ (A2: A10 = E1), 0 + (B2: B10 = F1))
A ** fórmula de matriz **** em nossa primeira célula escolhida seria:
= SE (LINHAS ($ 1: 1) > $ G $ 1, "", ÍNDICE ($ C $ 2: $ C $ 10, PEQUENAS (SE ($ A $ 2: $ A $ 10 = $ E $ 1, IF ($ B $ 2: $ B $ 10 = $ F $ 1, ROW ($ C $ 2: $ C $ 10) -MIN (LINHA ($ C $ 2: $ C $ 10)) + 1)), LINHAS ($ 1: 1))))
e copiado conforme necessário.
Concedido, ainda temos a questão de até onde copiar essa fórmula. E, embora tenhamos um cálculo para determinar o número necessário de linhas, ainda não queremos reajustar manualmente o número de células que contêm fórmulas sempre que quisermos atualizar os resultados. Este deve ser um trabalho inicial único.
Eu certamente não recomendaria copiar até o final da planilha. No entanto, desde que um limite superior adequadamente grande possa ser escolhido, então não deve importar muito em termos de desempenho se acabarmos com até milhares de células estranhas contendo fórmulas. A razão de ser, e a enorme diferença entre este set-up e a abordagem "preguiçosa" de IFERROR, que aqui a cláusula inicial:
= SE (LINHAS ($ 1: 1) > $ G $ 1, ""
significa que, em linhas além do número esperado de retornos, a cláusula IF retorna TRUE e, portanto, um espaço em branco é retornado. E a parte interessante sobre a função IF é que, se a cláusula passada para ela for TRUE, a parte FALSE - aqui uma fórmula de matriz grande e cheia de recursos - nem sequer é considerada para cálculo.
Este não é o caso da versão IFERROR, que continua a se distanciar, alheia ao fato de que seus cálculos são desnecessários e um fardo para os recursos.
Atenciosamente
** As fórmulas das matrizes não são inseridas da mesma maneira que as fórmulas 'padrão'. Em vez de pressionar apenas ENTER, você primeiro pressiona CTRL e SHIFT, e só então pressiona ENTER. Se você fez isso corretamente, você notará que o Excel coloca as chaves {} ao redor da fórmula (embora não tente inseri-las manualmente).