Obtener el contenido de una celda dados los números de fila y columna


96

Quiero obtener el contenido de una celda dado su número de fila y columna. El número de fila y columna se almacenan en celdas (aquí B1, B2). Sé que las siguientes soluciones funcionan, pero se sienten un poco extrañas.

Sol 1

=CELL("contents",INDIRECT(ADDRESS(B1,B2)))

Sol 2

=CELL("contents",OFFSET($A$1, B1-1,B2-1))

¿No existe un método menos detallado? (como = CellValue (fila, columna) o lo que sea)?

Edición / Aclaración: solo quiero usar las fórmulas de la hoja de cálculo de Excel. Sin VBA. En resumen, busco prácticamente el equivalente del método VBA Cells () como una fórmula de Excel.


¿Podemos tener un poco más de contexto? ¿Estás usando solo fórmulas de Excel? VBA? ¿Algún otro método?
Saladin Akara

Respuestas:


141

No necesita la parte CELL () de sus fórmulas:

=INDIRECT(ADDRESS(B1,B2))

o

=OFFSET($A$1, B1-1,B2-1)

ambos funcionarán. Tenga en cuenta que ambos INDIRECTy OFFSETson funciones volátiles. Las funciones volátiles pueden ralentizar el cálculo porque se calculan en cada nuevo cálculo.


Esto es lo suficientemente útil como para que me gustaría verlo editado para tener el número correcto de paréntesis de cierre.
Wyck

6
Dada la popularidad de esta pregunta / respuesta, sería genial tener aquí una pequeña oración sobre qué es una función volátil .
LondonRob

Tenga en cuenta que con el segundo formulario, dependiendo de $ a $ 1, se requiere que no mueva $ a $ 1 de ninguna manera en ediciones posteriores de la hoja.
Erk

INDIRECT+ ADDRESSes el camino a seguir. Excel en mi idioma se traduce OFFSETen 2 palabras separadas por un punto. ¡Eso es lo peor (junto con diéresis en los nombres de las funciones)!
Bitterblue

29

Prueba = índice (ARRAY, FILA, COLUMNA)

donde: Matriz: seleccione toda la hoja Fila, Columna: Sus referencias de fila y columna

Eso debería ser más fácil de entender para quienes miran la fórmula.


2

Me tomó un tiempo, pero así es como lo hice dinámico. No depende de una mesa ordenada.

Primero comencé con una columna de nombres de estados (Columna A) y una columna de aviones en cada estado (Columna B). (La fila 1 es una fila de encabezado).

Encontrar la celda que contiene el número de aviones fue:

=MATCH(MAX($B$2:$B$54),$B$2:$B$54,0)+MIN(ROW($B$2:$B$54))-1

Puse eso en una celda y luego le di a esa celda un nombre, "StateRow" Luego, usando los consejos de arriba, terminé con esto:

=INDIRECT(ADDRESS(StateRow,1))

Esto devuelve el nombre del estado del valor dinámico en la fila "StateRow", columna 1

Ahora, como los valores en la columna de recuento cambian con el tiempo a medida que se ingresan más datos, siempre sé qué estado tiene la mayor cantidad de aviones.

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.