Como você faz referência dinamicamente a qualquer célula com base em um nome de planilha variável ou número e seleção de número de linha e coluna (digamos, por meio de uma lista suspensa)?
Eu sei que INDIRETO seria a abordagem padrão (detalhada abaixo), mas como o INDIRETO é volátil (recalcula para cada pequena alteração na pasta de trabalho), pode diminuir consideravelmente sua planilha. Isso pode ser feito usando meios não voláteis? Também sei que as referências 3D podem ser úteis em casos selecionados em que você está, por exemplo, somando ou calculando a média em várias planilhas, mas não funcionará para endereçamento de célula individual.
Também vou propor minhas próprias respostas para essa pergunta usando INDEX(CHOOSE(...)), mas talvez haja uma maneira melhor?
Primeiro, a maneira fácil/usual/volátil de endereçar dinamicamente qualquer célula em qualquer planilha
Digamos que o nome da planilha necessário esteja em A1 ="JAN" e os números de linha e coluna estejam em B1 = 1 e C1 = 1, então:
retornaria a referência/valor em JAN!$A$1. Você também pode retornar um intervalo inteiro assim:
Que retornaria o valor de SUM(JAN!$A$1:$A$9)
Agora, para um método não volátil
Você pode usar a seguinte fórmula não volátil para indexar em qualquer célula em qualquer planilha, desde que a lista de planilhas seja estática/ou possa ser atualizada manualmente conforme necessário. A função CHOOSE pode retornar uma referência a cada planilha na pasta de trabalho com base no número de índice fornecido para CHOOSE. Você precisa usar CHOOSE com INDEX, pois INDEX não funciona normalmente em várias planilhas.
Você deve estender essa fórmula manualmente para incluir todas as planilhas da sua pasta de trabalho. A ordem em que você os coloca na lista de funções CHOOSE determina a ordem do número da planilha do índice CHOOSE (não a ordem na qual as planilhas são classificadas na pasta de trabalho).
Se seria preferível definir a longa função INDEX(CHOOSE(...)) como uma célula ou intervalo nomeado, para que você não precise digitá-la em várias fórmulas de célula (e se você tiver que editá-la/adicionar uma nova planilha, você só precisa editar o nome definido uma vez). Você pode usar nomes de definição relativos para adicionar as variáveis para números de planilha, linha e coluna ao intervalo nomeado em células adjacentes ou, no Office 365, defina o nome diga SHEETINDEX usando a função lambda
=LAMBDA(sheetnum, r, c, INDEX(CHOOSE(sheetnum,Sheet1!$A:$ZFD,Sheet2!$A:$ZFD,Sheet3!$A:$ZFD),r,c)
. Dessa forma, você pode usar o intervalo nomeado como uma função=SHEETINDEX(1,1,1)
para retornar Sheet1!$A$1.