Excel 2013 - Referenciar dinamicamente a tabela pelo nome da tabela

3

O TLDR

Estou procurando informações sobre como referenciar dinamicamente uma tabela em uma fórmula por nome. Para ser claro, estou falando de um objeto de tabela real, não de um intervalo nomeado, e quero escolher de qual tabela selecionar pelo valor de uma célula.

Descrição completa

Estou trabalhando com uma série de tabelas que compartilham uma formatação comum (por exemplo, nomes de coluna: [Level], [Feature], [Notes], etc.

Cada tabela tem um nome significativo e distinto: [Cleric], [Fighter], [Druid], etc.

Eu quero permitir que um usuário digite o nome de uma determinada tabela em uma célula e, em seguida, use INDEX-MATCH para fornecer informações sobre essa tabela para uso em outros cálculos.

Por exemplo: =INDEX(<??TableName??>, MATCH(Character.Level, <??TableName??>[Feature], 0), 2)

Existe alguma maneira de conseguir isso sem recorrer ao código ou a um plugin personalizado?

Eu vejo a opção de fazer uma grande tabela que inclui todas as separadas com uma coluna adicional como [class], e depois copiando dinamicamente as informações da tabela para uma segunda tabela e realizando minhas pesquisas lá, mas parece kludgey.

E sim, para aqueles curiosos, estou trabalhando em uma planilha de caracteres baseada em excel para DnD, 5ª ed. Eu quero deixar a matemática pronta quando os padrões OGL estiverem prontos.

Obrigado pelo seu tempo. Só poderei verificar as respostas periodicamente, mas espero fazer isso no fim de semana.

    
por J. Patton 30.01.2015 / 02:20

2 respostas

1

Eu suponho que você esteja confortável com as tabelas do Excel e com as fórmulas em geral. Nesse caso, isso deve ajudar:

link

INDIRECT é usado para criar uma referência dinamicamente . Como o nome da tabela é apenas uma referência, isso funcionará. Exemplo simples:

    
por 30.01.2015 / 02:45
0

Você pode usar funções IF aninhadas, mas isso é bastante confuso. A outra opção é usar o INDIRECT. Se você usá-lo com o CONCATENATE, você pode fazer praticamente o que estava pedindo.

=INDEX(INDIRECT(A12),MATCH(B12,INDIRECT(CONCATENATE(A12,"[Level]")),0),2)

Veja a captura de tela:

    
por 30.01.2015 / 04:01