BUSCAR EN Excel por segunda columna usando el nombre de la tabla como rango

11

Usando la tabla de ejemplo a continuación, puedo usar la fórmula =VLOOKUP("ABC123456",Table1,3,FALSE)para buscar el Demandvalor, pero quiero poder realizar la búsqueda usando el Cust Partcampo sin tener que hacer que el Cust Partcampo sea la primera columna de la tabla. Hacer Cust Partla primera columna no es una solución aceptable, porque también necesito realizar búsquedas usando el Partcampo, y no quiero usar rangos codificados (por ejemplo $B$2:$C$4) principalmente como una cuestión de preferencia, sino también porque uso la tabla y el campo nombres hace que la fórmula sea más fácil de leer. ¿Hay alguna forma de hacer esto?

ingrese la descripción de la imagen aquí

Drew Chapin
fuente

Respuestas:

14

Es posible usar OFFSETpara devolver el rango de Tabla1 pero 1 columna, p. Ej.

=VLOOKUP("AZ12345",OFFSET(Table1,0,1),2,FALSE)

Eso buscará AZ12345 en la columna CustPart y devolverá el valor de la siguiente columna

barry houdini
fuente
¿Qué parámetro debería estar aquí si se necesita el valor de la columna Parte aquí?
zygimantus
10

Puede combinar INDEXy MATCHobtener el mismo resultado VLOOKUPsin restringir la comparación a la primera columna. Aunque es un poco más complejo.

=INDEX(Table1[Demand],MATCH("AZ12345",Table1[Cust Part],0))

Básicamente, está utilizando MATCHpara encontrar el número de fila y INDEXpara obtener el valor.

Nota: a diferencia VLOOKUP, si el resultado es una celda en blanco, INDEXvolverá en 0lugar de una cadena en blanco.

Drew Chapin
fuente
1
"A diferencia VLOOKUP"? Se comporta exactamente de la misma manera con respecto a las celdas en blanco que se traducen a ceros.
underscore_d
1
Este es el primer ejemplo que he visto con el INDEX MATCHuso de una tabla. Esto mejora enormemente la legibilidad de la fórmula. Estaba tratando de evitarlo OFFSETporque es una función volátil de Excel y puede dar lugar a un procesamiento adicional de gastos generales.
Ben
2

¿Qué tal algo como:

=VLOOKUP("ABC123456";Table1[[Cust Part]:[Demand]];COLUMNS(Table1[[Cust Part]:[Demand]]);FALSE) 

Prefiero esto para que pueda ver lo que está haciendo, incluso en tablas más complejas, además, si la estructura de la tabla cambia, la fórmula seguirá funcionando, siempre y cuando la columna Parte de Cust esté frente a la columna Demanda.

Peter
fuente