Puede usar las funciones ROW
y COLUMN
para hacer esto. Si omite el argumento para esas fórmulas, se utiliza la celda actual. Se pueden usar directamente con la OFFSET
función o con cualquier otra función en la que pueda especificar tanto la fila como la columna como valores numéricos.
Por ejemplo, si ingresa =ROW()
en la celda D8, el valor devuelto es 8. Si ingresa =COLUMN()
en la misma celda, el valor devuelto es 4.
Si desea la letra de la columna, puede usar la CHAR
función. No recomiendo el uso de letras para representar la columna, ya que las cosas se ponen difíciles al pasar a los nombres de columna de doble letra (de todos modos, el uso de números es más lógico).
De todos modos, si aún desea obtener la letra de la columna, simplemente puede agregar 64 al número de columna (64 es un carácter menos A
), por lo que en el ejemplo anterior, si establece el valor de la celda =CHAR(COLUMN()+64)
, el valor devuelto sería D
. Si desea que el valor de una celda sea la ubicación de la celda en sí, la fórmula completa sería =CHAR(COLUMN()+64) & ROW()
.
Solo para su información, obtuve 64 de una tabla ASCII. También puede usar la CODE
fórmula, por lo que la fórmula actualizada con esto sería =CHAR(COLUMN() + CODE("A") - 1)
. Debe restar 1 ya que el valor mínimo de COLUMN
siempre es 1, y luego el valor mínimo de retorno de toda la fórmula sería B
.
Sin embargo, esto no funcionará con columnas de dos letras. En ese caso, necesita la siguiente fórmula para analizar correctamente las columnas de dos letras:
=IF(COLUMN()>26,IF(RIGHT(CHAR(IF(MOD(COLUMN()-1,26)=0,1,MOD(COLUMN()-1,26))+64),1)="Y",CHAR(INT((COLUMN()-1)/26)+64) & "Z",CHAR(INT((COLUMN()-1)/26)+64) & CHAR(IF(MOD(COLUMN(),26)=0,1,MOD(COLUMN(),26))+64)),CHAR(COLUMN()+64))&ROW()
No estoy seguro de si hay una manera más fácil de hacerlo o no, pero sé que funciona desde la celda A1
hasta ZZ99
sin problemas. Sin embargo, esto ilustra por qué es mejor evitar el uso de identificadores de columna basados en letras y seguir con fórmulas basadas en números puros (por ejemplo, usar el número de columna en lugar de la letra con OFFSET
).
LIN
yCOL
el problema es que devuelven números, y necesito la letra de la columnaINDIRECT
.