Percebo que o OP já encontrou a resposta em GETPIVOTDATA , mas, para outros usuários para os quais isso não funciona, aqui está outra opção.
Se, por alguma razão, o uso do GETPIVOTDATA não funcionar para as suas necessidades - já me deparei com esse problema algumas vezes - então você ainda pode usar seu combo INDEX / MATCH com uma pequena modificação, mas ele fará isso muito mais tempo. O formato geral é =INDEX(ResultArray, MATCH(Lookup_Value, Lookup_Array, Match_Type))
Você precisa modificar ResultArray e Lookup_Array para ser dinâmico sem depender da atualização da fórmula automaticamente. Você pode fazer isso com a função OFFSET . Por exemplo, digamos que você tenha uma tabela dinâmica com os cabeçalhos na linha 4. Use OFFSET e MATCH para encontrar primeiro os cabeçalhos que você deseja.
=INDEX(OFFSET(FirstColumnOfPivotTable, 0, MATCH("Result Header", "4:4", 0)), MATCH(Lookup_Value, OFFSET(FirstColumnOfPivotTable, 0, MATCH("Lookup Header", "4:4", 0)), Match_Type))
Existem alguns problemas com esta solução:
- A seleção do intervalo a ser usado para
FirstColumnOfPivotTable é fundamental. Se você escolher um intervalo estático, torne-o maior do que você jamais precisará. Seria melhor também ser dinâmico com base no tamanho da tabela dinâmica.
- Se você adicionar / remover filtros na tabela dinâmica, a linha 4 pode não ter mais os cabeçalhos e isso quebraria a fórmula
- Qualquer coisa que dependa de mais coisas em alinhamento é mais provável que quebre
GETPIVOTDATA só pode retornar um número que já está sendo exibido na tabela dinâmica. Se você deseja o total de algum subcabeçalho, mas o total não é mostrado na tabela dinâmica, a função não pode fornecê-lo a você. Se possível, modifique sua tabela dinâmica para usar GETPIVOTDATA porque é mais robusto. Se você não puder fazer isso, tente a fórmula mais longa acima e tenha cuidado apenas com a maneira como gerencia a tabela dinâmica.