La fórmula en cuestión nos da la dirección de la última celda no vacía a condición que todos los valores del rango, o por lo menos el de la última celda, sean texto.
Por supuesto hay casos en que los valores en el rango son numéricos, en otros casos son sólo texto y también hay casos en que hay valores de ambos tipos.
Supongamos estos dos rangos de valores
La fórmula que nos dará la dirección de la última celda en la columna que contiene un valor de tipo texto es
=DIRECCION(COINCIDIR("*",A:A,-1),1)
El problema con esta fórmula es que si en una celda aparece el símbolo * como texto, dará como resultado la dirección de esa celda. Podemos reemplazar esa fórmula por ésta
=DIRECCION(COINCIDIR(REPETIR("z",250),A:A),1)
Hemos reemplazado el valor de la celda A4 por "*". Usando la primer fórmula (en la celda D3) obtenemos el resultado $A$4, que es incorrecto. Con nuestra nueva fórmula obtenemos el resultado correcto (en la celda D4).
Si el rango a evaluar contiene sólo valores numéricos, como en la columna B, usamos esta fórmula
=DIRECCION(COINCIDIR(9.99999999999999E+307,B:B),2)
La expresión 9.99999999999999E+307 es el mayor número que Excel puede considerar.
Para obtener el valor de la última celda podemos usar la función INDIRECTO usando como referencia la celda que contiene la dirección o anidando la fórmula dentro de INDIRECTO. Por ejemplo =INDIRECTO(D3) dará como resultado "Laura"
También podemos usar las funciones anidadas en una única fórmula
=INDIRECTO(DIRECCION(COINCIDIR("*",A:A,-1),1))
Y en el caso de la columna B con valores numéricos
=INDIRECTO(DIRECCION(COINCIDIR(9.99999999999999E+307,B:B),2))
Para encontrar la dirección de la última celda en un rango mixto (valores numéricos y texto) podemos usar esta fórmula matricial
={MAX((FILA(A1:A65535)*(A1:A65535<>"")))}
o esta que es la misma pero con SUMAPRODUCTO
=DIRECCION(SUMAPRODUCTO(MAX((FILA(A1:A65535)*(A1:A65535<>"")))),1)
La expresión (A1:A65535<>"") crea una matriz de valores VERDADERO o FALSO.
La expresión crea una matriz con el número de fila. Al multiplicar los vectores, el número de fila de toda celda vacía será 0. Por lo tanto la función MAX nos dará el número de fila de la última celda no vacía.
Otro tipo de solución es utilizar funciones definidas por el usuario (UDF) como las que publicó John Walkenbach hace ya mucho tiempo.
Aquí pueden descargar el cuaderno con las funciones y las macros.
Technorati Tags: MS Excel