Referenciar dinamicamente uma coluna de tabela nomeada (via conteúdo da célula) no Excel


12

Como faço para referenciar uma coluna da tabela do Excel dinamicamente no Excel 2007? Quero referenciar uma coluna nomeada de uma tabela nomeada e a coluna referenciada variará com o valor de uma célula.

Eu tenho uma tabela no Excel (vamos chamá-la Tabela1 ). Eu quero referenciar uma de suas colunas e COUNTos números nessa coluna. Desejo identificar a coluna referenciada dinamicamente a partir de um valor em outra célula ( A1) para que eu possa obter o seguinte resultado: Quando altero A1, a fórmula que conta a Tabela1 [ DynamicallyReferencedColumnName ] é atualizada para a nova referência.

Exemplo:

  • Se A1= names    , a fórmula seria igual COUNT(Table1[names]).
  • Se A1= lastname, a fórmula seria igual COUNT(Table1[lastname]).

Eu tentei usar =COUNT(Table1[INDIRECT("$A$1")]), mas o Excel diz que a fórmula contém um erro.

Como posso fazer isso?


PS: Encontrei este documento do MSDN que pode ser relevante: Recálculo do Excel .


Qual versão do Excel você está usando?
21712 CharlieRB

Atualmente usando o Excel 2007
rcphq 13/08/12

Penso que esta questão também pode ser reformulada como: "referenciar um componente dinâmico de uma referência estruturada no excel".
jiggunjer

Respostas:


13

Você quase conseguiu INDIRECT(), mas sua lógica estava um pouco errada. Tente isso:

=COUNT(INDIRECT("Table1["&A1&"]"))

A chave a lembrar é que INDIRECT()somente o texto (ou seja, uma string) recebe o primeiro argumento. Portanto, você deve passar todas as partes da referência da tabela para a função como texto.


Na verdade, isso funcionou, eu precisava fazer referência à tabela inteira. isso funcionou! obrigado!
Rcphq 13/08/12

15

O uso do método INDIRECT funciona, mas é melhor evitar sempre que possível, pois é uma função volátil e pode ter um enorme impacto computacional em sua planilha.

Uma alternativa não volátil que realiza o que você deseja é usar INDEX / MATCH

COUNT(INDEX(Table1, 0, MATCH($A$1, Table1[#Headers], 0)))

-Tim


Excelente, na verdade, me deparei com esse método mais tarde e tenho usado desde então. Por coincidência, comecei a perceber uma grande desaceleração nas planilhas mais antigas, onde estava usando indiretamente mais de uma dúzia de folhas. Obrigado!
Rcphq 07/02

2

primeira etapa, configure uma célula de texto que contenha o nome da coluna que você deseja referenciar (por exemplo, $ A $ 1) $ A $ 1 contém "Coluna2", por exemplo.

para encontrar a contagem da coluna à qual $ A $ 1 se refere seria = Count (indireta ("Tabela1 [" & $ a $ 1 & "]"))

esse método indireto pode ser usado para construir todas as partes da referência da tabela e, por exemplo, também pode ser organizado para procurar em tabelas diferentes

dica. se a célula $ a $ 1 for validada como lista suspensa que aponta para os cabeçalhos da tabela única, quaisquer alterações no número de colunas na tabela de quaisquer alterações nos títulos do cabeçalho serão selecionadas.


1
(1) Primeiro passo: coloque o nome da coluna desejada em uma célula como A1.  O OP já fez isso, e diz isso na pergunta.   (2) O segundo passo é uma cópia exata da resposta de Excellll . (4) Configurar A1como uma lista suspensa dos nomes de colunas válidos parece uma boa ideia, mas não entendo o restante do último parágrafo da resposta.
2626 Scott

1

Aqui está um artigo muito bom sobre referências estruturadas no Excel. Parece que isso funciona de maneira um pouco diferente no Excel 2010 e no Excel 2007.

Usando referências estruturadas com tabelas do Excel

Basicamente, você fará referência à tabela e depois à coluna dentro da tabela.

Tabela genérica do Excel

Neste exemplo, você pode fazer referência à Tabela 1 da Coluna 1 assim:

=COUNT(Table1[Column1])

Você pode nomear as colunas do cabeçalho na sua tabela. Se eu renomeie a Coluna1 para Vendas, a fórmula se tornará:

=COUNT(Table1[Sales])

Sim minha mesa está devidamente nomeado com as diferentes colunas, o que eu quero é um método para dizer ao Excel que coluna eu quero depender de um valor de célula, algo como isto =COUNT(Table1[A1])Onde A1 é a célula que eu quero para conter o columnname
rcphq
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.