Hola a todos! Hoy me gustaría hablar acerca de la posibilidad de obtener de la última celda con datos de una columna. Se puede dar la circunstancia de que en nuestros trabajos diarios necesitemos tener actualizada esta información en todo momento, por ejemplo, imaginémonos que diariamente nos reportan datos de cotizaciones, porcentajes, cifras de negocio, etc y que tenemos un cuadro de mando o una simple hoja en la que queremos reflejar el último dato registrado.
Para dar con la solución adecuada os propongo tres alternativas en función de: si los datos son numéricos o texto y si en el rango de datos existen o no celdas vacías.
Os muestro las tres fórmulas que podremos utilizar y cuándo es adecuado su uso:
=DESREF(B1;CONTAR(B:B);0) Cuando el rango de datos no contiene celdas vacías y la información es numérica. En caso de que la información no sea numérica, podremos cambiar la función CONTAR por CONTARA y a continuación - 1 y funcionará correctamente así: =DESREF(B1;CONTARA(B:B)-1;0)
=BUSCAR(MAX(B:B)+1;(B:B))
Cuando el rango de datos contenga celdas vacías o el rango sea continuo y la información sea numérica.
=INDICE(B:B;MAX(FILA(B:B)*(B:B<>"")))
Fórmula matricial, válida para todos los casos, datos numéricos, texto, con celdas vacías en el rango o información continua.
Os muestro una imagen de cómo quedaría la información con todas las fórmulas aplicadas (en este caso tenemos un rango de datos sin celdas en blanco:
Ahora que ya conocéis todas las características de cada fórmula y cuando aplicarla, creo que tendréis solucionada esta necesidad.
Ha sido una entrada muy corta pero creo que resume muy bien las alternativas que podemos utilizar.
Descarga el archivo de ejemplo pulsando en: OBTENER VALOR DE LA ULTIMA CELDA DE UNA COLUMNA
Como siempre muy interesante. El primer caso lo tenía controlado, pero los otros dos nunca se me habían planteado. Tendré que estudiarlos mas en profundidad.
Gracias por el post
Muchas gracias adoxcel! 🙂 sí, las otras dos las investigué por el tema de las celdas vacías, y de esta forma está todo el abanico de casos bien controlado. Saludos!
Muy útil la información. Muchas gracias por compartirla.Saludos
Al utilizar la segunda fórmula en mi tabla y actualizar el segundo campo me cambia a este ultimo valor.
¿Como puedo hacer para que me quede el ultimo valor, sin que se altere?
Km Anterior Km Actual Kms Totales
6900 7500 600
7500 8120 620
8120
Lo que quiero que ponga en Km Anterior el ultimo valor de Km Actual, teniendo en cuenta que hay celdas vacias.
Hola Joaquin:
Con los datos que me envías no consigo saber qué es lo que necesitas. Envía el archivo a excelsignum@yahoo.es con los datos como los tienes y como te gustaría que quedasen.
Las fórmulas actúan sobre una columna no en varias. Es posible que necesites una macro, pero necesito ver el archivo.
Saludos.
hola como estas, tengo un problema necesito poner el ultimo valor de una columna pero están en formulas los datos de la columna y siempre me aparece en cero cual seria el problema. de antemano muchas gracias por su respuesta.
Hola Roberto:
Las fórmulas funcionan correctamente aunque estén en fórmula. Tendria que ver el archivo para verificar cuál puede ser el error. Puedes enviarlo a excelsignum@yahoo.es
Gracias doctor
Gracias a ti, Leonardo!.
Saludos
Buen día muchas gracias.
Tengo una duda, cuando lo hago en una misma hoja me trabaja bien, pero cuando llamo el ultimo dato desde otra hoja, me aparece el primer dato y no el ultimo.
Que pasa en ese caso?
Saludos..
Hola Victor:
Las fórmulas funcionan de la misma forma aunque el dato se encuentre en otra hoja. No sé cual es el problema, pero puedes enviar el archivo a excelsignum@yahoo.es y le echo un vistazo.
Saludos.
En primer momento Gracias por el aporte. Es de mucha ayuda. Mi pequeña duda es que hace el «+1» en la segunda formula, lo quité y me sigue funcionando, le puse un +5 por probar y sigue funcionando. que función cumple entonces,???? GRACIAS
Hola Marvin:
Prueba a hacer lo mismo pero con con un rango mucho menor:
DIA DATOS
LUNES 62,97375225
MARTES 14,94793687
Solo lunes y martes, borra todo lo anterior y elimina el +1. Verás que lo que te devuelve el el primer registro y no el último. Para eso es el +1 para corregir ese resultado que solo pasa cuando tenemos dos unos valores al inicio del rango y el resto está vacío.
Saludos.
Buenas tengo un caso a resolver, creo que la primer o la tercer formula es la indicada, pero se me complican adaptarla
En una planilla necesito que en la celda de la columna A me tome el penultimo campo completado de una serie de 7 campos con los mismos datos, el cual representa el resultado del ultimo llamado de un contacto.(el mismo puede tener hasta, en este caso, 7 llamados), es decir que necesito que aparezca el dato de la ultima modificación registrada, como puedo adaptarlo?.
Tengo otro tipo de datos en el mismo rango de la fila como fecha y hs de llamados que no son importantes
Hola Florencia, si lo que necesitas es obtener el penúltimo dato y no el último, solo tienes que modificar la fórmula, así:
=INDICE(6:6;MAX(COLUMNA(C6:AW6)*(C6:AW6<>""))-1)
Saludos
Siiiiiii!!! muchisimas gracias Segu!!!!
Buenos días
Tengo una matriz con espacios vacíos y necesito identificar el único dato (alfabético) que se registra en un rango de una fila, pero he probado todas las formulas que indicas y solo me da como resultado ceros.
Agradezco mucho tu colaboración.
Hola Ivonne:
Entonces lo que indica eso es que tienes celdas que no están vacías (están en blanco pero no vacías). verifica que en esa columna no tengas ceros en las celdas y aplica la fórmula limpiar en todo el rango restante de columna.
Saludos.
Buenas tardes, tengo una consulta, es posible ingresar un numero en una celda y que me busque el ultimo numero y la coloque en otra celda; me explico si ingreso un Numero de identifiación por ejemplo 1234567890, que en otra celda me indique que el ultimo numero ingresado en la celda es cero y coloque cero, si es uno coloque 1 y asi sucesivamente.
Hola Félix:
La función derecha, hace lo que necesitas: =DERECHA(A2;1)
Saludos.
Hola! Me gustaría saber como puedo mandar llamar al último dato de una columna.
Este es el asunto:
Cada trabajador tiene un número de empleado. A los empleados se les da un premio mensual (que puede o no ocurrir).
El premio se registra semanalmente, y siempre en una columna específica, en donde el número de empleado aparece siempre en la misma fila, en la segunda columna.
La intención es: usando el número de empleado, desplegar el último premio entregado a dicho empleado, siempre y cuando su valor sea mayor que cero.
Como el número de empleado aparece recurrentemente (semana tras semana), el deseo es localizar el último valor siempre.
El número de empleado aparece en la columna 2. El valor del premio aparece en la columna 8.
El dato se mandará llamar desde otro Libro de Excel.
Hola Daniel.
Tendria que ver un ejemplo en excel, aunque sería aplicar la dormula del post.
No puedo enviarte ejemplo porque me he quedado sin placa base de mi equipo (la están reparando). Enviame un ejemplo en un archivo y cuando pueda lo miro.
Excelente aporte!! muchas gracias, no conocía tu pagina.. voy a tenerla bien presente.. nuevamente gracias
Eres un maestro. Mil gracias!
hola, como puedo obtener el último dato de una columna condicionado a otra. Me explico, cada ciudad tiene un correlativo dentro de ella, entonces necesito obtener ese ultimo número +1 para continuar
Hola Marco;
Necesito ver un ejemplo de lo que comentas, puedes enviarlo al correo de la web.
Saludos.
Muchísimas gracias!! Es un sustituto muy valioso al .end(xldown).row de VBA. Quisiera comprender como se explica la última…
3. =INDICE(B:B;MAX(FILA(B:B)*(B:B»»)))
La fórmula Índice lo comprendo, pero la parte matricial de «MAX(FILA(B:B)*(B:B»»)» me causa mucha curiosidad. ¿Pordrías explicarnoslo porfavor?
La fórmula funciona perfectamente!! Muchas gracias de nuevo
Lo que hace la función es evaluar la última fila de la columna B con la función Max, otorga a cada fila con datos el número de fila en el que se encuentra, si no tiene datos, la evalua aunque le otorga un 0 en su valor, pero lo tiene en cuenta en la función máximo, de forma que será capaz de obtener el 20 que la última fila.
Muchas gracias por tu respuesta!
Buenas Tardes. Podríamos agregarle otro parámetro que buscara el último martes de la columna, o también que buscara en vez de días de la semana, que fuera años 2018, 2018, 2018, 2019, 2019, 2019, 2020, 2020. Muchas gracias de antemano.
Un saludo.
Hola Manuel:
Tendrías que utilizar otra función:
=DESREF(INDICE(A:A;COINCIDIR(2;1/(A:A=»JUEVES»)));0;1)
Aquí obtienes el valor del último jueves.
Espero que te sirva, saludos.
Buenas tardes Segu:
He utilizado el fórmula que me indicas y me da error #¡DIV/0!. No sé porqué será.
Me puedes ayudar ?
Te he enviado un archivo por correo con la fórmula.
Saludos.
Buenas tardes Segu:
Muchas gracias por responderme enseguida.
Me daba error la fórmula porque yo no le asignaba fórmula matricial. Ahora sí me busca el dato bien.
Muchas gracias por esa labor de ayudarnos a los que no sabemos todas los vericuetos que tiene excel.
Muy interesante, sin embargo si los valores de la columna son obtenidos mediante formula y las últimas celdas aun no se han llenado, siempre el resultado será «cero», cual sería la instrucción para obtener el valor deseado?
Muchas gracias…
Por ejemplo si esa fórmula que no se ha actualizado hasta el final o si el dato que devuelve es un 0, por ejemplo:
=INDICE(B:B;MAX(FILA(B:B)*(B:B<>0)))
lo indicas en la función <>0 o si es un error lo que envía, tendrás que utilizar si.error para pasar el error a un valor y luego controlarlo en la fórmula.
Saludos.
Hola! intente usar la formula 3, pero me marca #¡VALOR! la formula la plantee así:
=INDICE(B11:B37,MAX(FILA(B11:B37)*(B11:B37″»)))
Gracias, las otras me funcionaron muy bien!
O utilizas toda la columna o empiezas en B1, pero no puedes aplicarla en mitad del rango.
Saludos.
Gracias!
Que formula podría usar para que me arroje el ultimo dato en un rango que comience en una fila diferente del B1?
Todo depende de cómo tengas los datos.
La fórmula que quieres usar en el rango 13 y 32 tendría que ser así, pero donde la función indice, la matriz debe ser toda la columna, aunque siempre te mostrará los datos en el rango. Es decir, podrías usarla perfectamente.
=INDICE(B:B;MAX(FILA(B13:B32)*(B13:B32<>«»)))
y estas son las otras…
=DESREF(B13;CONTAR(B13:B32);0)
=DESREF(B13;CONTARA(B13:B32)-1;0)
=BUSCAR(MAX(B13:B32)+1;(B13:B32))
Elige la que necesitas y estudia detenidamente los argumentos de cada función y como se comportan.
Saludos.
esto era lo que necesitaba!!!!!!!!! infinitas gracias!!!!
Muchas gracias por tu aporte, me ha servido!
Hola como podria hacer esto pero en un rango de filas «OBTENER VALOR DE LA ÚLTIMA CELDA DE UNA FILA»
Pues consultado este otro post:
https://excelsignum.com/2020/05/29/obtener-valor-de-la-ultima-celda-de-una-fila/
Saludos
Gracias por las formulas, necesito entender con mas detalle esta ultima =INDICE(B:B;MAX(FILA(B:B)*(B:B0))) quiero saber por qué sí funciona poniendo *(B:B0) el * esta multiplicando? por que tengo que decirle que el rango es 0 para que encuentre correctamente la ultima celda? de lo contrario me devuelve valor 0, primero la use con «»
Es la formula que necesito pero no quiero usarla sin entenderla, lei la explicacion en otro comentario anterior pero esta parte *(B:B0) no entiendo. Muchas gracias!
aclaracion, en lo que escribi en el comentario no salio escrito el simbolo de mayor y menor . Reitero, lo que no entiendo es la parte final del *(y lo que sigue)
Para comprenderla una forma muy sencilla de hacerlo es ir aplicando partes de la fórmula para ver qué se obtiene en cada paso. Saludos.
Buenos días,
Acabo de ver tu fórmula y te agradezco el aporte.
Una consulta y a ver si es posible…
Y si la columna de datos de la que se quiere obtener el valor está en orden inverso?
Es decir, si lo que buscamos es el último valor pero está al principio de la columna en lugar de al final?
Gracias.
Se podría modificar la fórmula:
=INDICE(B:B;MIN(FILA(B:B)*(B:B<>«»))+2)
Es matricial, ojo.
Gracias, lo pruebo…
Lo he resuelto con esta… y me ha funcionado.
=INDICE(B1:B1000;COINCIDIR(VERDADERO;B1:B1000<>0;0))
Gracias de nuevo.
La sigue cambiando…
Me cambia el mayor / menor para poner distinto de cero, por un cero…
=INDICE(B1:B1000;COINCIDIR(VERDADERO;B1:B1000distintode0;0))
Excelente y muy precisa información, gracias por compartir tus conocimientos.
Existe una variante de esta formula, para cuando los datos se encuentran en otra hoja de cálculo, dentro del mismo documento excel?
Muy buena información, gracias por compartir tus conocimientos y hacernos las tareas mucho mas fáciles.