En mi
anterior entrada veíamos la forma de
detectar la ultima celda con datos, en un rango o tabla. Dicha utilidad se logró mediante funciones matriciales, debido a que ciertas celdas podrían o no estar con valores. Repasemos un poco los conceptos fundamentales antes de ingresar a este nuevo ejemplo que les traigo.
Tengo un rango con datos y necesito saber cual es la ultima fila con valores:
con la función CONTAR() vemos que la fila 4 es la ultima en tener un valor.
[+/-] Ver el resto / Ocultar
Si en lugar de numeros fueran caracteres o cualquier otro dato (o una combinación de ellos) debemos utilizar CONTARA(). Esto es muy sencillo... y las cosas se empiezan a complicar si algunas celdas no contienen ningún valor:
error: la función me devuelve 5, pero la fila 7 es la ultima ocupada.
Una posible forma de solucionarlo es mediante el link que les dejé al principio de la entrada, utilizando funciones matriciales. Pero he accedido a un excelente ejemplo de un capo total de Excel, el Sr. Claudio Sanchez, quien posee varios libros sobre funciones y macros, y es una de las personas que mas conoce sobre esta aplicación. Punto aparte, es menester destacar la gran ayuda que siempre brinda a todos los que están en problemas con Excel y sus secretos.
Claudio nos propone usar la funcion:
=COINCIDIR(valor_buscado; matriz;[tipo_de_coincidencia])
El tercer parámetro es opcional y puede contener 3 valores: 0=Coincidencia exacta, 1=Menor que..., -1=Mayor que...
Con COINCIDIR() buscamos un valor dentro de una matriz y si este existe, nos devuelve su posición (número de fila) dentro de la misma.
Unas imágenes para aclarar la cuestión:
aqui busco el valor "abril powerpoint" en la matriz (rango) A:A, solicitando coincidencia exacta (tercer argumento=0). Vemos que dicho valor ocupa la cuarta (4) posición en la matriz.
Ahora bien ¿como uso esto para determinar la útlima fila ocupada? Y el gran ingenio de la respuesta está en tratar correctamente al poco utilizado tercer argumento opcional, "engañando" en cierta forma a Excel.
exacto: la fila 10 es la correcta.
Y si borro algunas celdas:
perfecto, sigue funcionando.
Explicación:
1) le digo a Excel que busque el valor 0 (cero) en la matriz A:A
2) aunque los valores se encuentren desordenados (y aquí el truco) mediante el ultimo argumento (-1) le "hago creer" que la matriz está ordenada de Mayor a Menor. Entoces, por lógica, el menor elemento mayor a cero (el valor buscado) estará en la útlima posición. Genial.
Pero también esto tiene sus "peros". ¿Y si existe algún valor negativo en la matriz?
dejó de funcionar.
La solución pasa por indicar en el argumento "valor_buscado" algún número negativo lo suficientemente grande:
la función "funcionando" de nuevo. pasé como primer argumento un número negativo muy grande (-99.999) y todo resuelto.
Pero claro... si nuestros usuario colocan -100.000... dejaría de andar correctamente de nuevo. Y aquí es donde agrego algo (el toque personal podría decirse) a la solución de Claudio:
=COINCIDIR(MIN(A:A)-1;A:A;-1)
O sea: el primer argumento es una funcion que detecta el mínimo valor del rango A:A y le resta uno. Ya podemos quedarnos tranquilos que el ejemplo devolverá siempre la última fila ocupada de un rango, en forma dinámica, sin importar los valores que nuestros usuarios ingresen a la matriz:
Espero que les sirva y hagan uso de este ejemplo. No dejen de seguir las publicaciones de Claudio Sanchez, quien tiene una impresionante y útil obra editorial sobre funciones y macros en Excel, la cual se consigue en prácticamente todas las librerías.
Comentarios
Publicar un comentario