Excel-BUSCARV frente a ÍNDICE/PARTIDO-¿Cuál es mejor?
indexing match (1)
Prefiero usar
INDEX
/
MATCH
en prácticamente todas las situaciones porque es mucho más flexible y tiene el potencial de ser mucho más eficiente dependiendo de qué tan grande sea la tabla de búsqueda.
El único momento en el que realmente puedo justificar el uso de
VLOOKUP
es para tablas muy sencillas donde el número de índice de la columna es dinámico, aunque incluso en este caso,
INDEX
/
MATCH
es igualmente viable.
Daré algunos ejemplos específicos a continuación para demostrar las diferencias detalladas entre los dos métodos.
INDEX / MATCH puede buscar a la izquierda (o en cualquier otro lugar que desee)
Estas son probablemente las ventajas más obvias de
INDEX
/
MATCH
, así como una de las mayores caídas de
VLOOKUP
.
VLOOKUP
solo puede buscar a la derecha,
INDEX
/
MATCH
puede buscar desde cualquier rango, incluidas diferentes hojas si es necesario.
El siguiente ejemplo no se puede lograr con
VLOOKUP
.
INDEX / MATCH tiene el potencial de usar rangos de celdas más pequeños (aumentando así la eficiencia)
Considere el siguiente ejemplo. Se puede lograr con cualquier método.
Ambas fórmulas funcionan bien.
Sin embargo, dado que la fórmula
VLOOKUP
contiene un rango mayor que la fórmula
INDEX
/
MATCH
, es innecesariamente volátil.
Si alguna celda en el rango
B1:G4
cambia, la fórmula
VLOOKUP
debe recalcular (porque
B1:G4
está dentro del rango
A1:H4
) aunque cambiar cualquier celda en
B1:G4
no afectará el resultado de la fórmula.
Esto no es un problema para
INDEX
/
MATCH
porque su fórmula no contiene el rango
B1:G4
.
Usar VLOOKUP con col_index_number fijo es peligroso
El principal problema que veo al tener un número de índice de columna fijo es que no se actualizará como debería si se insertan columnas completas. Considere el siguiente ejemplo:
Esta fórmula funciona bien a menos que se inserte una columna dentro de la tabla de búsqueda. En ese caso, la fórmula buscará el valor a la izquierda de donde debería. Vea a continuación el resultado después de que se haya insertado una columna.
En realidad, esto se puede aliviar mediante el uso de la siguiente fórmula
VLOOKUP
:
= VLOOKUP("s",A1:H4,COLUMN(H1)-COLUMN(A1)+1,FALSE)
Ahora
H1
se actualizará automáticamente a
I1
si se inserta una columna, preservando así la referencia a la misma columna.
Sin embargo, esto es completamente innecesario porque
INDEX
/
MATCH
puede lograr esto sin este problema con la fórmula a continuación.
= INDEX(H1:H4,MATCH("s",A1:A4,0))
Me doy cuenta de que este es un escenario poco probable, pero siempre me molestó que
VLOOKUP
busque de forma predeterminada en función de un índice de columna fijo que no se actualiza automáticamente si se insertan columnas.
Para mí, solo parece hacer que la función
VLOOKUP
más frágil.
INDEX / MATCH también puede manejar índices de columna variables, pero una fórmula más larga
Si el número de índice de la columna en sí es dinámico, este es realmente el único caso cuando creo que
VLOOKUP
simplifica un poco las cosas, pero una vez más, la alternativa
INDEX
/
MATCH
es igual de buena, un poco más confusa.
Ver ejemplos a continuación.
INDEX / MATCH es más eficiente para múltiples búsquedas
(gracias a @jeffreyweir)
Si se necesitan múltiples valores de búsqueda para un solo valor de coincidencia, es mucho más eficiente tener una celda auxiliar con el valor de coincidencia. De esta manera, la coincidencia solo debe calcularse una vez, en lugar de una para cada fórmula de búsqueda. Ver ejemplo a continuación.
Este valor de coincidencia se puede usar para devolver los valores de búsqueda apropiados. Vea el ejemplo a continuación, (la fórmula se ha arrastrado hacia la derecha).
Esta "división" manual del valor de coincidencia y los valores de índice no es una opción con
VLOOKUP
ya que el valor de coincidencia es una variable "interna" en
VLOOKUP
y no se puede acceder.
INDEX / MATCH puede buscar un rango, permitiendo otra operación
Digamos, por ejemplo, que desea encontrar un valor máximo en una columna en función del nombre de la columna.
Primero puede usar
MATCH
para encontrar la columna apropiada, luego
INDEX
para devolver el
rango
de esa columna completa, luego use
MAX
para encontrar el máximo de ese rango.
Vea el ejemplo a continuación, la fórmula en
H4
busca el valor máximo del nombre de columna especificado en la celda
G4
.
Esto no se puede lograr usando
VLOOKUP
solo.
En resumen
VLOOKUP
es, en el mejor de los casos, tan bueno como
INDEX
/
MATCH
y es cierto que es menos confuso en algunas situaciones.
Y en el peor de los casos,
VLOOKUP
es mucho más inseguro y volátil que
INDEX
/
MATCH
.
También vale la pena señalar que si desea buscar un
rango en
lugar de un solo valor, se debe usar
INDEX
/
MATCH
.
VLOOKUP
no se puede usar para buscar un rango.
Por estas razones, generalmente prefiero
INDEX
/
MATCH
en prácticamente todas las situaciones.
Entiendo cómo usar cada método:
VLOOKUP
(o
HLOOKUP
) vs.
INDEX
/
MATCH
.
Estoy buscando diferencias entre ellos no en términos de preferencia personal, sino principalmente en las siguientes áreas:
-
¿Hay algo que un método puede hacer que el otro no?
-
¿Cuál es más eficiente en general (o depende de la situación)?
-
Cualquier otra ventaja / desventaja de usar un método versus el otro
NOTA : Estoy respondiendo mi propia pregunta aquí, pero estoy buscando ver si alguien más tiene otras ideas en las que no haya pensado.