Fórmula de Excel: ejemplo de BUSCARV inversa -

Tabla de contenido

Fórmula genérica

=VLOOKUP(A1,CHOOSE((3,2,1),col1,col2,col3),3,0)

Resumen

Para revertir una VLOOKUP, es decir, para encontrar el valor de búsqueda original usando un resultado de fórmula VLOOKUP, puede usar una fórmula complicada basada en la función ELEGIR, o fórmulas más sencillas basadas en INDICE y COINCIDIR o XLOOKUP como se explica a continuación. En el ejemplo que se muestra, la fórmula en H10 es:

=VLOOKUP(G10,CHOOSE((3,2,1),B5:B8,C5:C8,D5:D8),3,0)

Con esta configuración, BUSCARV encuentra la opción asociada con un costo de 3000 y devuelve "C".

Nota: este es un tema más avanzado. Si recién está comenzando con BUSCARV, comience aquí.

Introducción

Una limitación clave de VLOOKUP es que solo puede buscar valores a la derecha. En otras palabras, la columna con los valores de búsqueda debe estar a la izquierda de los valores que desea recuperar con BUSCARV. Como resultado, con la configuración estándar, no hay forma de usar BUSCARV para "mirar a la izquierda" e invertir la búsqueda original.

Desde el punto de vista de VLOOKUP, podemos visualizar el problema así:

La solución alternativa que se explica a continuación utiliza la función ELEGIR para reorganizar la tabla dentro de BUSCARV.

Explicación

Comenzando por el principio, la fórmula en H5 es una fórmula VLOOKUP normal:

=VLOOKUP(G5,B5:D8,3,0) // returns 3000

Usando G5 como el valor de búsqueda ("C") y los datos en B5: D8 como la matriz de la tabla, BUSCARV realiza una búsqueda de los valores en la columna B y devuelve el valor correspondiente de la columna 3 (columna D), 3000. Aviso cero (0) se proporciona como último argumento para forzar una coincidencia exacta.

La fórmula en G10 simplemente extrae el resultado de H5:

=H5 // 3000

Para realizar una búsqueda inversa, la fórmula en H10 es:

=VLOOKUP(G10,CHOOSE((3,2,1),B5:B8,C5:C8,D5:D8),3,0)

El truco es la función ELEGIR, que se usa para reorganizar la matriz de la tabla de modo que el costo sea la primera columna y la opción sea la última:

CHOOSE((3,2,1),B5:B8,C5:C8,D5:D8) // reorder table 3, 2, 1

La función ELEGIR está diseñada para seleccionar un valor basado en un índice numérico. En este caso, estamos proporcionando tres valores de índice en una constante de matriz:

(3,2,1) // array constant

En otras palabras, estamos solicitando la columna 3, luego la columna 2, luego la columna 1. A esto le siguen los tres rangos que representan cada columna de la tabla en el orden en que aparecen en la hoja de trabajo.

Con esta configuración, ELEGIR devuelve las tres columnas en una única matriz 2D como esta:

(1000,"Silver","A";2000,"Gold","B";3000,"Platinum","C";5000,"Diamond","D")

Si visualizamos esta matriz como una tabla en la hoja de trabajo, tenemos:

Nota: los títulos no son parte de la matriz y se muestran aquí solo para mayor claridad.

Efectivamente, hemos intercambiado las columnas 1 y 3. La tabla reorganizada se devuelve directamente a BUSCARV, que coincide con 3000, y devuelve el valor correspondiente de la columna 3, "C".

Con INDICE y MATCH

La solución anterior funciona bien, pero es difícil de recomendar, ya que la mayoría de los usuarios no entenderán cómo funciona la fórmula. Una mejor solución es INDICE y COINCIDIR, usando una fórmula como esta:

=INDEX(B5:B8,MATCH(G10,D5:D8,0))

Aquí, la función COINCIDIR encuentra el valor 3000 en D5: D8 y devuelve su posición, 3:

MATCH(G10,D5:D8,0) // returns 3

Nota: MATCH se configura para una coincidencia exacta estableciendo el último argumento en cero (0).

COINCIDIR devuelve un resultado directamente a ÍNDICE como el número de fila, por lo que la fórmula se convierte en:

=INDEX(B5:B8,3) // returns "C"

e INDICE devuelve el valor de la tercera fila de B5: B8, "C".

Esta fórmula muestra cómo INDICE y COINCIDIR pueden ser más flexibles que BUSCARV.

Con XLOOKUP

XLOOKUP también proporciona una muy buena solución. La fórmula equivalente es:

=XLOOKUP(G10,D5:D8,B5:B8) // returns "C"

Con un valor de búsqueda de G10 (3000), una matriz de búsqueda de D5: D8 (costos) y una matriz de resultados de B5: B8 (opciones), XLOOKUP ubica el 3000 en la matriz de búsqueda y devuelve el elemento correspondiente de la matriz de resultados, "C". Debido a que XLOOKUP realiza una coincidencia exacta de forma predeterminada, no es necesario establecer el modo de coincidencia explícitamente.

Articulos interesantes...