![¿Cómo utilizar vlookup para devolver el último valor de una tabla?](https://rvso.com/image/1331460/%C2%BFC%C3%B3mo%20utilizar%20vlookup%20para%20devolver%20el%20%C3%BAltimo%20valor%20de%20una%20tabla%3F.png)
Por ejemplo, mi tabla, a la que llamaré Tabla1 (la he definido como un nombre), se agrega a medida que ingresan nuevos datos. ¿Cómo puedo usar vlookup para recuperar el valor de la segunda columna del punto de datos final (último) en la parte inferior? de la Tabla 1?
Respuesta1
¿La primera columna es numérica o de texto? Puede utilizar la opción de búsqueda de rango y buscar un valor que será mayor que cualquier valor en su tabla. Si su primera columna contiene palabras, intente:
=VLOOKUP("ZZZZZ", Table1, 2, TRUE)
o, si su primera columna es un número de cinco dígitos, intente:
=VLOOKUP("99999", Table1, 2, TRUE)
Y se me acaba de ocurrir que esto también funcionará, pero es más lento. Defina la primera columna de la Tabla1 como Tabla1Col1.
=VLOOKUP(MAX(Table1Col1), Table1, 2, TRUE)
Respuesta2
Si desea actualizar dinámicamente la columna que está seleccionando, puede usar una fórmula MATCH() para completar el valor col_index_num. Por ejemplo:
=VLOOKUP("d", Table1, 2, FALSE)
devolverá el valor en la segunda columna. mientras que:
=VLOOKUP("d",Table1[#All],MATCH("value2",Table1[#Headers],0),FALSE)
devolverá el valor de la columna cuyo encabezado es valor2. Aún más dinámicamente, puedes escribirlo así:
=VLOOKUP("d", Table1, MATCH(Table1[[#Headers],[value2]],Table1[#Headers],0), FALSE)
que se actualizará automáticamente si cambia el nombre de los encabezados de las columnas de la tabla
Respuesta3
=VLOOKUP(A2,Table1,2,MAX(Table1Col2))
Explicación: =VLOOKUP(**Data being looked up**,**Name of Table or data range**,**column of data being looked up**,MAX(**Name or data range of data being looked up**))
Recuperará el último valor de las filas que coinciden con el valor_buscado
Respuesta4
Respondiendo principalmente para dar una respuesta moderna a los buscadores actuales ("moderno" = 2021).
Usarías XLOOKUP()
. No es un reemplazo perfecto y no se adapta a algunas situaciones. Pero este es simple y su versión beta fue rediseñada para hacerlo.
La característica de interés es que tiene un parámetro para buscar desde el final hacia el principio, así que... ¡slamdunk!
Sin embargo, al leer las respuestas, noté que no hay una respuesta definitiva para la pregunta en términos que hubieran funcionado cuando se publicaron. La respuesta del medio ni siquiera aborda la pregunta y la tercera es mentirosa hasta el enésimo grado. Utiliza algo sofisticado para generar el valor booleano TRUE
cuando simplemente escribir TRUE
(o 0
para ellos, lo que prefieran) haría exactamente lo mismo. Casi da la impresión de que el que respondió esperaba que algo elegante, algo pretencioso, adquiriera la apariencia de valor. Vaya. Y NO NO NO tiene razón en que, si bien PUEDE dar una respuesta correcta, es solo por casualidad. Posibilidad decente, ya que el modo principal de falla será cuando el valor deseado sea el último elemento del rango, pero dado que esto podría basarse especialmente en la fecha, hay una probabilidad bastante decente de que suceda.
La primera respuesta ofrece algunas cosas prácticas para probar y, dependiendo de sus datos, una de ellas, o algo inspirado en ellas, podría funcionar bien para usted. No como el tercero, que está bastante inspirado en estafadores y daría a muchos una fuerte sensación de confianza en los resultados, dejándolos atónitos cuando el jefe viene gritando sobre un fracaso.
Sin embargo, son sólo cosas prácticas y no necesariamente soluciones. Existe un enfoque estándar para esto, disponible "en muchas partes" de Internet, que se utiliza LOOKUP()
de manera inteligente. Pero ¿qué tal algo mucho más directo y cuyo funcionamiento sea más fácil de entender? (Para la mayoría, el LOOKUP()
método, aunque inteligente, realmente inteligente y realmente simple, es simplemente desconcertante, perdiéndolos en la etapa de primera mirada, por lo que, si bien podrían comprenderlo FÁCILMENTE, nunca llegan al punto en el que se dan cuenta).
La INDEX()
función se puede utilizar para voltear una tabla, por así decirlo, de modo que la primera fila presentada al resto de la fórmula sea la última fila del rango original ("físico"). Se hace especificando, para el parámetro de fila, algo que genere una secuencia de números que comience con el número de fila más alto ("índice" más alto) y caiga a 1.
Esto se hizo en 2012/2013 usando un truco inteligente para generar los números de fila en una secuencia: ROW(1:100)
da una secuencia de 1, 2, 3,... 98, 99, 100. Para revertirlo, pensarías que podrías usar ROW(100:1)
pero Excel "corrige" útilmente tu tonto error ROW(1:100)
, te guste o no. No hay forma de superar eso. Pero si conoce el número de fila más alto utilizado, y no sería un problema, puede agregarle 1, por lo que en este ejemplo 100 + 1, y luego restarle la secuencia que Excel le proporciona. Como tienes 101 - 1, 100 - 2, 100 - 3, ... obtienes 100, 99, 98, ... hasta 101 - 100, o 1.
Úselo para el parámetro de fila de INDEX()
modo que invierta las filas para que sean del último al primero.
Para las columnas de INDEX()
, debes pensar más allá de la experiencia habitual con VLOOKUP()
. Por lo general, le proporciona una tabla/rango que puede tener muchas columnas. Entonces tal vez A2:W900. Quiere buscar en la columna A y encontrar algo en la columna T (o en la columna 20). Entonces podrías tener algo como VLOOKUP("cow",A2:W900,20,false)
. Bueno, INDEX()
le permite usar un pequeño truco para especificar solo ciertas columnas en lugar de usar todas las columnas en el rango dado: la constante de matriz.
Array Constants
son una forma de dar, bueno, una matriz... de valores a Excel. Se ven así: {"a","cow",13,999,"fisherman","circu"}. So in this example, you want to have columns A and T, or 1 and 20, so you'd give
INDEX() {1,20}` para el tercer parámetro, el parámetro de columna.
El objetivo de todo esto es que INDEX()
crea una tabla virtual para usar en la fórmula en lugar de la tabla real. La tabla virtual no tiene filas 2-900 ni columnas AW. Tiene las filas 900 a 2 y las columnas A y T únicamente. Esa función se vería así para el ejemplo:
INDEX( A2:W900, 900-ROW(1:899), {1,20} )
(Recuerde, está usando las filas 2 a 900, por lo que solo tiene 899 filas, no 900. Entonces, la fila 2 de Excel es el "índice" 1 en el rango y la fila 900 de Excel es el índice 899. 899 + 1 = 900, por lo que usa 900, no 901. Entonces los números en la fórmula tienen "sentido".
Ahora tiene una tabla virtual de la columna A y la columna T SOLAMENTE, la fila 900 primero, bajando a la fila 2 al final, y esta es su tabla para usar en el archivo VLOOKUP()
. Entonces, la fórmula completa para buscar la palabra "vaca" y obtener una coincidencia exacta... comenzando por el FINAL y avanzando hacia el principio, se vería así:
=VLOOUP( "cow", INDEX( A2:W900, 900-ROW(1:899), {1,20} ), 2, false )
Dado que los datos de la tabla "real" son las filas 2-900, esto es encontrar la ÚLTIMA coincidencia utilizando una tabla que invirtió los datos para que sean las filas 900-2. Y solo usa las dos columnas, la que realiza la búsqueda EN y la que obtiene los datos, no las 23 columnas de datos. Dado que solo hay dos columnas, la columna desde la que devolver una respuesta siempre es FÁCIL: es la columna 2. "falso" garantiza una coincidencia exacta, si la hay.
Y esto SIEMPRE funcionará.
Además, esa constante de matriz que usamos {1,20}
... ¿qué crees que haría revertir esos valores? Como en {20,1}
. Invierten el orden de las columnas. Entonces, si desea utilizar VLOOKUP()
, pero su columna de búsqueda en este ejemplo es la columna T y desea resultados de la columna A, no tendrá suerte. (El viejo "accidente sin suerte" de mi época en el programa de energía nuclear de la Marina de los EE. UU. Hombre, accidente "OOL"... estábamos TAN cerca de crear "LOL" años antes, pero... simplemente... no t... Bueno, supongo que los accidentes en plantas de reactores no eran motivo de risa, así que tal vez sea lo mejor, ¿eh?) Su columna de búsqueda DEBE estar a la izquierda de su columna de resultados para usar VLOOKUP()
... ¡no bueno!
Sin embargo, dado que crea una tabla virtual que invierte las columnas, ¡su columna de búsqueda de repente está A LA IZQUIERDA después de todo! ¡BUENO!
Además, la constante de matriz para las columnas (o filas, pero generalmente columnas) puede usar solo algunos números, usarlos en cualquier orden Y usarlos más de una vez si lo desea.
Recordando el "método moderno": hoy en día podemos usarlo SEQUENCE()
para generar directamente esa secuencia inversa desde 899 hasta 1.