¿Alguien conoce la fórmula para encontrar el valor de la última celda no vacía en una columna, en Microsoft Excel?
excel
worksheet-function
MichaelS
fuente
fuente
Respuestas:
Esto funciona tanto con texto como con números y no le importa si hay celdas en blanco, es decir, devolverá la última celda que no está en blanco.
Debe ingresarse en una matriz , lo que significa que presione Ctrl-Shift-Enter después de escribirlo o pegarlo. Lo siguiente es para la columna A:
fuente
CELL()
oOFFSET()
), mientras que el más votado devuelve un valor sin decirle dónde está.Usar la siguiente fórmula simple es mucho más rápido
Para Excel 2003:
Te da las siguientes ventajas:
Explicación:
(A:A<>"")
devuelve matriz{TRUE,TRUE,..,FALSE,..}
1/(A:A<>"")
modifica esta matriz a{1,1,..,#DIV/0!,..}
.LOOKUP
espera una matriz ordenada en orden ascendente , y teniendo en cuenta que si laLOOKUP
función no puede encontrar una coincidencia exacta, elige el valor más grande en ellookup_range
(en nuestro caso{1,1,..,#DIV/0!,..}
) que sea menor o igual al valor (en nuestro caso2
), fórmula encuentra el último1
en la matriz y devuelve el valor correspondiente deresult_range
(tercer parámetro -A:A
).También una pequeña nota : la fórmula anterior no tiene en cuenta las celdas con errores (solo puede verla si la última celda no vacía tiene un error). Si quieres tenerlos en cuenta, usa:
la imagen de abajo muestra la diferencia:
fuente
LOOKUP
dice que el último argumentoresult_vector
es opcional. Sin embargo, si lo omito, obtengo un resultado muy extraño que no entiendo.LOOKUP
función no puede encontrar ellookup_value
, la función coincide con el valor más grandelookup_vector
que es menor o igual alookup_value.
" Si utilizo=LOOKUP(2,A:A<>"",A:A)
sin generar el#DIV/0!
error por1/...
, parece que devuelve algún valor en el medio de el vector. No he encontrado cuál es la funcionalidad exacta en este caso.=LOOKUP(2,1/(A:A<>""),ROW(A:A))
pero agregar laROW
función agregará un efecto de "volatilidad": la fórmula se volverá a calcular cada vez que se cambie cualquier celda en la hoja de trabajoAquí tienes otra opción:
=OFFSET($A$1;COUNTA(A:A)-1;0)
fuente
COUNTA
lugar deCOUNT
). Sin mencionar las celdas en blanco.Inspirado por la gran pista dada por la respuesta de Doug Glancy, se me ocurrió una manera de hacer lo mismo sin la necesidad de una fórmula de matriz. No me pregunte por qué, pero estoy dispuesto a evitar el uso de fórmulas de matriz si es posible (no por ninguna razón en particular, es solo mi estilo).
Aquí está:
Para encontrar la última fila no vacía usando la columna A como columna de referencia
Para encontrar la última columna no vacía usando la fila 1 como fila de referencia
Esto se puede utilizar además junto con la función de índice para definir de manera eficiente rangos dinámicos con nombre, pero esto es algo para otra publicación, ya que no está relacionado con la pregunta inmediata que se aborda aquí.
He probado los métodos anteriores con Excel 2010, tanto "de forma nativa" como en "Modo de compatibilidad" (para versiones anteriores de Excel) y funcionan. Nuevamente, con estos no necesita hacer nada de Ctrl + Shift + Enter. Al aprovechar la forma en que funciona el sumproducto en Excel, podemos entender la necesidad de realizar operaciones de matriz, pero lo hacemos sin una fórmula de matriz. Espero que alguien pueda apreciar la belleza, la simplicidad y la elegancia de estas soluciones de sumproducto propuestas tanto como yo. Sin embargo, no doy fe de la eficiencia de memoria de las soluciones anteriores. Solo que son simples, se ven hermosos, ayudan al propósito previsto y son lo suficientemente flexibles como para extender su uso a otros propósitos :)
¡Espero que esto ayude!
¡Todo lo mejor!
fuente
Sé que esta pregunta es antigua, pero no estoy satisfecho con las respuestas proporcionadas.
LOOKUP, VLOOKUP y HLOOKUP tienen problemas de rendimiento y nunca deberían usarse.
Las funciones de matriz tienen mucha sobrecarga y también pueden tener problemas de rendimiento, por lo que solo deben usarse como último recurso.
COUNT y COUNTA tienen problemas si los datos no están contiguos sin espacios en blanco, es decir, tiene espacios en blanco y luego datos nuevamente en el rango en cuestión
INDIRECT es volátil, por lo que solo debe usarse como último recurso.
OFFSET es volátil, por lo que solo debe usarse como último recurso
cualquier referencia a la última fila o columna posible (la fila 65536th en Excel 2003, por ejemplo) no es sólida y resulta en una sobrecarga adicional
Esto es lo que yo uso
cuando el tipo de datos es mixto:
=max(MATCH(1E+306,[RANGE],1),MATCH("*",[RANGE],-1))
cuando se sabe que los datos contienen solo números:
=MATCH(1E+306,[RANGE],1)
cuando se sabe que los datos contienen solo texto:
=MATCH("*",[RANGE],-1)
MATCH tiene la sobrecarga más baja y no es volátil, por lo que si está trabajando con muchos datos, este es el mejor para usar.
fuente
TRUE
/FALSE
), no se detectarán. A pesar de que esta respuesta no es a prueba de balas, sigo pensando que esta respuesta tiene el menor impacto en el rendimiento.=INDEX(N:N,MATCH(1E+306,N:N,1))
Esto funciona en Excel 2003 (y posteriores con una edición menor, ver más abajo). Presione Ctrl + Shift + Enter (no solo Enter) para ingresar esto como una fórmula de matriz.
Tenga en cuenta que Excel 2003 no puede aplicar una fórmula de matriz a una columna completa. Hacerlo rinde
#NUM!
; ¡Pueden ocurrir resultados impredecibles! (EDITAR : Información contradictoria de Microsoft: lo mismo puede ser cierto o no sobre Excel 2007; es posible que el problema se haya solucionado en 2010. )Es por eso que aplico la fórmula de matriz al rango
A1:A65535
y le doy un tratamiento especial a la última celda, que estáA65536
en Excel 2003. No puedo simplemente decirA:A
o inclusoA1:A65536
cuando esta última automáticamente vuelve aA:A
.Si está absolutamente seguro de que
A65536
está en blanco, puede omitir laIF
parte:Tenga en cuenta que si está utilizando Excel 2007 o 2010, el último número de fila es 1048576, no 65536, así que ajuste el anterior según corresponda.
Si no hay celdas en blanco en el centro de sus datos, entonces me gustaría utilizar la fórmula más simple,
=INDEX(A:A,COUNTA(A:A))
.fuente
=INDEX(19:19,COUNTA(19:19))
Una solución alternativa sin fórmulas de matriz, posiblemente más robusta que la de una respuesta anterior con una (sugerencia a) solución sin fórmulas de matriz , es
Vea esta respuesta como ejemplo. Felicitaciones a Brad y barry houdini , quienes ayudaron a resolver esta pregunta .
Las posibles razones para preferir una fórmula sin matriz se dan en:
Una página oficial de Microsoft (busque "Desventajas de usar fórmulas de matriz").
Las fórmulas de matriz pueden parecer mágicas, pero también tienen algunas desventajas:
Herejía de fórmula de matriz .
fuente
A
apariciones con unD
. ¿Qué estoy haciendo mal?si busca en la columna (A) use:
si su rango es A1: A10 puede usar:
en esta fórmula:
devuelve el último número de fila que no está en blanco e indirecto () devuelve el valor de celda.
fuente
=INDEX(A:A, COUNTA(A:A), 1)
tomado de aquífuente
=MATCH("*";A1:A10;-1)
para datos textuales=MATCH(0;A1:A10;-1)
para datos numéricosfuente
He probado todas las versiones no volátiles, pero ninguna de las versiones anteriores ha funcionado ... Excel 2003/2007update. Seguramente esto se puede hacer en Excel 2003. No como una matriz ni como una fórmula estándar. Recibo solo un error en blanco, 0 o #valor. Así que recurro a los métodos volátiles ... Esto funcionó ...
@Julian Kroné .. Usando ";" en lugar de "," NO funciona! Creo que estás usando Libre Office, no MS Excel. LOOKUP es tan molestamente volátil que lo uso solo como último recurso
fuente
Coloque este código en un módulo VBA. Salvar. En funciones, definido por el usuario buscar esta función.
fuente
para datos textuales:
para datos numéricos:
Esto le da el índice relativo de la última celda no vacía en el rango seleccionado (aquí A1: A10).
Si desea obtener el valor, acceda a él a través de INDIRECTO después de construir -textualmente- la referencia de celda absoluta, por ejemplo:
fuente
Yo también tuve el mismo problema. Esta fórmula también funciona igualmente bien:
14 es el número de fila de la primera fila de las filas que desea contar.
Diente de garra crónica
fuente
Usé HLOOKUP
A1
tiene una cita;A2:A8
tiene previsiones capturadas en diferentes momentos, quiero las últimasEsto usa una fórmula de búsqueda estándar con la matriz de búsqueda definida por el número de entradas.
fuente
Si sabe que no habrá celdas vacías en el medio, la forma más rápida es esta.
Solo cuenta las celdas que no están vacías y se refiere a la celda apropiada.
También se puede utilizar para un rango específico.
Esto devuelve la última celda no vacía en el rango O4: O34.
fuente
Para Microsoft Office 2013
"Último menos uno" de una fila no vacía:
"Última" fila no vacía:
fuente
Esta fórmula funcionó conmigo para Office 2010:
= BUSCAR (2; 1 / (A1: A100 <> ""); A1: A100)
A1: la primera celda A100: consulte la última celda en la comparación
fuente
Creo que la respuesta de W5ALIVE está más cerca de lo que uso para encontrar la última fila de datos en una columna. Sin embargo, suponiendo que estoy buscando la última fila con datos en la Columna A, usaría lo siguiente para la búsqueda más genérica:
El primer PARTIDO encontrará la última celda de texto y el segundo PARTIDO encontrará la última celda numérica. La función SI.ERROR devuelve cero si la primera COINCIDENCIA encuentra todas las celdas numéricas o si la segunda coincidencia encuentra todas las celdas de texto.
Básicamente, esta es una ligera variación de la solución mixta de texto y números de W5ALIVE.
Al probar la sincronización, esto fue significativamente más rápido que las variaciones de BUSCAR equivalentes.
Para devolver el valor real de esa última celda, prefiero usar una referencia de celda indirecta como esta:
El método ofrecido por sancho.s es quizás una opción más limpia, pero modificaría la parte que encuentra el número de fila a esto:
la única diferencia es que ", 1" devuelve el primer valor mientras que ", 0" devuelve la matriz completa de valores (todos menos uno de los cuales no son necesarios). Todavía tiendo a preferir dirigir la celda a la función de índice allí, en otras palabras, devolver el valor de la celda con:
¡Gran hilo!
fuente
Si no tiene miedo de usar matrices, la siguiente es una fórmula muy simple para resolver el problema:
= SUMA (SI (A: A <> "", 1,0))
Debe presionar CTRL + MAYÚS + ENTRAR porque esta es una fórmula de matriz.
fuente
Uno simple que funciona para mí:
fuente
De acuerdo, tuve el mismo problema que el autor de la pregunta y probé las dos respuestas principales. Pero solo obteniendo errores de fórmula. Resultó que necesitaba cambiar el "," por ";" para que las fórmulas funcionen. Estoy usando XL 2007.
Ejemplo:
o
fuente
Para el seguimiento de versiones (agregando la letra v al principio del número), encontré que este funciona bien en Xcelsius (SAP Dashboards)
fuente