Hacer referencia dinámica a una columna de tabla con nombre (a través del contenido de la celda) en Excel


12

¿Cómo hago referencia a una columna de tabla de Excel dinámicamente en Excel 2007? Quiero hacer referencia a una columna con nombre de una tabla con nombre y la columna a la que se hace referencia variará con el valor de una celda.

Tengo una tabla en Excel (llamémosla Tabla1 ). Quiero hacer referencia a una de sus columnas y COUNTlos números en esa columna. Quiero identificar la columna referenciada dinámicamente a partir de un valor en otra celda ( A1) para poder lograr el siguiente resultado: Cuando cambio A1, la fórmula que cuenta la Tabla1 [ DynamicallyReferencedColumnName ] se actualiza a la nueva referencia.

Ejemplo:

  • Si A1= names    entonces la fórmula sería igual COUNT(Table1[names]).
  • Si A1= lastnameentonces la fórmula sería igual COUNT(Table1[lastname]).

Intenté usarlo =COUNT(Table1[INDIRECT("$A$1")]), pero Excel dice que la fórmula contiene un error.

¿Cómo puedo hacer esto?


PD: encontré este documento de MSDN que puede ser relevante: recálculo de Excel .


¿Qué versión de Excel estás usando?
CharlieRB

Actualmente usando Excel 2007
rcphq

Creo que esta pregunta también puede reformularse como: "hacer referencia a un componente dinámico de una referencia estructurada en Excel".
jiggunjer

Respuestas:


13

Casi lo tienes INDIRECT(), pero tu lógica estaba un poco fuera de lugar. Intenta esto en su lugar:

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

La clave para recordar es que INDIRECT()solo toma texto (es decir, una cadena) para el primer argumento. Por lo tanto, debe pasar todas las partes de la referencia de la tabla a la función como texto.


de hecho eso funcionó, necesitaba hacer referencia a toda la tabla. esto funcionó! ¡Gracias!
rcphq

15

El uso del método INDIRECTO funciona, pero es mejor evitarlo siempre que sea posible, ya que es una función volátil y puede tener un impacto computacional masivo en su hoja de cálculo.

Una alternativa no volátil que logra lo que desea es usar INDEX / MATCH

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

-Tim


Excelente, realmente encontré este método más tarde y lo he estado usando desde entonces. Coincidencialmente comencé a notar una gran desaceleración en las hojas de cálculo más antiguas donde estaba usando indirecta en más de una docena de hojas. ¡Gracias!
rcphq

2

primer paso, configure una celda de texto que contiene el nombre de la columna a la que hace referencia (por ejemplo, $ A $ 1) $ A $ 1 contiene "Columna2", por ejemplo.

luego para encontrar el recuento de la columna a la que se refiere $ A $ 1 sería = Count (indirecto ("Table1 [" & $ a $ 1 & "]"))

Este método indirecto puede usarse para construir todas las partes de la referencia de la tabla y, por ejemplo, también puede organizarse para buscar desde diferentes tablas

propina. si las celdas $ a $ 1 se validan como una lista desplegable que apunta a los encabezados de la tabla individual, se tomarán los cambios en el número de columnas en la tabla de cualquier cambio en los títulos de encabezado.


1
(1) Primer paso: poner el nombre de la columna deseada en una celda como A1.  El OP ya ha hecho esto, y lo dice en la pregunta.   (2) El segundo paso es una copia exacta de la respuesta de Excellll . (4) Configurar A1como un menú desplegable de los nombres de columna válidos parece una buena idea, pero no entiendo el resto del último párrafo de la respuesta.
Scott,

1

Aquí hay un muy buen artículo sobre referencias estructuradas en Excel. Parece que esto funciona un poco diferente en Excel 2010 que en Excel 2007.

Usar referencias estructuradas con tablas de Excel

Básicamente, hará referencia a la tabla y luego a la columna dentro de la tabla.

Tabla genérica de Excel

En este ejemplo, puede hacer referencia a la Tabla 1, Columna 1, de esta manera:

=COUNT(Table1[Column1])

Puede nombrar las columnas de encabezado en su tabla. Si cambiara el nombre de Columna1 a Ventas, la fórmula sería:

=COUNT(Table1[Sales])

Sí, mi tabla está correctamente nombrada con las diferentes columnas, lo que quiero es un método para decirle a Excel qué columna quiero dependiendo de un valor de celda, algo como esto =COUNT(Table1[A1])Donde A1 es la celda que quiero que contenga el nombre de la columna
rcphq
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.