Ejemplos de la Función BUSCARH en Excel, VBA y Google Sheets
Download the example workbook
Este tutorial muestra cómo utilizar la Función BUSCARH en Excel y Google Sheets para buscar un valor.
¿Qué es la Función BUSCARH?
La función BUSCARH se utiliza para realizar Búsquedas Horizontales (a diferencia de los BUSCARVs que realizan Búsquedas Verticales). Busca un valor en la fila superior de una tabla. Luego devuelve un valor un número especificado de filas hacia abajo desde el valor encontrado.
Tiene algunas limitaciones que suelen superarse con otras funciones, como INDICE / COINCIDIR o BUSCARX.
BUSCARH – Ejemplo Básico
Veamos un ejemplo de datos de un libro de notas. Abordaremos varios ejemplos para extraer información de alumnos concretos.
Si queremos encontrar en qué clase está Bob, escribiríamos la fórmula
=BUSCARH("Bob";A1:E3;2;FALSO)
Cosas importantes a recordar:
- El elemento que buscamos («Bob»), debe estar en la primera fila de nuestro rango de búsqueda (A1:E3).
- Hemos indicado a la función que queremos devolver un valor de la 2da fila del rango de búsqueda, que en este caso es la fila 2.
- Hemos indicado que queremos hacer una coincidencia exacta poniendo Falso como último argumento. En este caso, la respuesta será «Lectura».
Consejo adicional: También puede utilizar el número 0 en lugar de Falso como argumento final, ya que tienen el mismo valor. Algunas personas prefieren esto porque es más rápido de escribir. Sólo hay que saber que ambos son aceptables.
Revisemos la Sintaxis:
Sintaxis y Entrada de la Función BUSCARH:
=BUSCARH(valor_buscado; matriz_buscar_en; indicador_filas; [ordenado])
valor_buscado – El valor que desea buscar.
matriz_buscar_en -La tabla de la que se van a recuperar los datos.
indicador_filas – El número de la fila de la que se van a recuperar los datos.
ordenado [opcional] -Un booleano para indicar la coincidencia exacta o aproximada. Por defecto = VERDADERO = coincidencia aproximada.
BUSCARH – Datos Desplazados
Para aclarar nuestro primer ejemplo, el elemento de búsqueda no tiene que estar en la fila 1 de la hoja de cálculo, sino en la primera fila del rango de búsqueda. Utilicemos el mismo conjunto de datos:
Ahora, busquemos la calificación de la clase de Ciencias. Nuestra fórmula sería
=BUSCARH("Ciencias"; A2:E3; 2; FALSO)
Ésta sigue siendo una fórmula válida, ya que la primera fila de nuestro rango de búsqueda es la fila 2, que es donde se encontrará nuestro término de búsqueda «Ciencia». Estamos devolviendo un valor de la 2da fila del rango de búsqueda, que en este caso es la fila 3. La respuesta entonces es «A-«.
Comodines
La función BUSCARH admite el uso de los comodines «*» y «?» al realizar búsquedas. Por ejemplo, digamos que hemos olvidado cómo se deletrea el nombre de Frank, y sólo queremos buscar un nombre que empiece por «F». Podríamos escribir la fórmula
=BUSCARH("F*"; A1:E3; 2; FALSO)
Esto sería capaz de encontrar el nombre Frank en la columna E, y luego devolver el valor de la 2da fila relativa. En este caso, la respuesta será «Ciencias».
Coincidencia No Exacta
La mayoría de las veces, querrá asegurarse de que el último argumento de BUSCARH sea Falso (o 0) para obtener una coincidencia exacta. Sin embargo, hay algunas ocasiones en las que puede buscar una coincidencia no exacta. Si tiene una lista de datos ordenados, también puede utilizar BUSCARH para devolver el resultado del elemento que sea el mismo o el siguiente más pequeño. Esto se utiliza a menudo cuando se trata de rangos crecientes de números, como en una tabla de impuestos o bonos de comisión.
Digamos que quieres encontrar la tasa de impuestos para un ingreso introducido en la celda H2. La fórmula en H4 puede ser
=BUSCARH(H2; A1:F2; 2; VERDADERO)
La diferencia en esta fórmula es que nuestro último argumento es «Verdadero». En nuestro ejemplo concreto, podemos ver que cuando nuestro individuo introduce un ingreso de $45.000 tendrá un tipo impositivo del 15%.
Nota: Aunque normalmente queremos una coincidencia exacta con False como argumento, si se olvida de especificar el 4to argumento en un BUSCARH, el valor por defecto es VERDADERO. Esto puede causar resultados inesperados, especialmente cuando se trata de valores de texto.
Fila Dinámica
BUSCARH requiere que des un argumento que diga de qué fila quieres devolver un valor, pero puede surgir la ocasión cuando no sabes dónde estará la fila, o quieres permitir que tu usuario cambie la fila a devolver. En estos casos, puede ser útil utilizar la función COINCIDIR para determinar el número de fila.
Consideremos de nuevo nuestro ejemplo del libro de notas, con algunas entradas en G2 y G4. Para obtener el número de columna, podríamos escribir una fórmula de
COINCIDIR(G2;A1:A3;0)
Esto tratará de encontrar la posición exacta de «Grado» dentro del rango A1:A3. La respuesta será 3. Sabiendo esto, podemos introducirlo en una función HLOOKUP y escribir una fórmula en G6 como la siguiente
=BUSCARH(G4;A1:E3;COINCIDIR(G2;A1:A3;0);0)
Así, la función COINCIDIR se evaluará a 3, y eso le dice al BUSCARH que devuelva un resultado de la 3era fila en el rango A1:E3. En general, obtenemos el resultado deseado de «C». Nuestra fórmula es ahora dinámica en el sentido de que podemos cambiar la fila a buscar o el nombre a buscar.
Limitaciones de BUSCARH
Como se mencionó al principio del artículo, la mayor desventaja de BUSCARH es que requiere que el término de búsqueda se encuentre en la columna más a la izquierda del rango de búsqueda. Mientras que hay algunos trucos que puedes hacer para superar esto (como la función ELEGIR), la alternativa común es usar INDICE y COINCIDIR. Esa combinación le da más flexibilidad, y a veces incluso puede ser un cálculo más rápido.
Función BUSCARH en Google Sheets
La función BUSCARH funciona exactamente igual en Google Sheets que en Excel:
Ejemplos de HLOOKUP (BUSCARH) en VBA
También puede utilizar la función HLOOKUP en VBA. Tipo:
Application.WorksheetFunction.Hlookup(lookup_value,table_array,row_index_num,range_lookup)
Ejecutando las siguientes sentencias VBA
Sub buscarh()
Range("G2") = Application.WorksheetFunction.HLookup(Range("C1"), Range("A1:E3"), 1)
Range("H2") = Application.WorksheetFunction.HLookup(Range("C1"), Range("A1:E3"), 2)
Range("I2") = Application.WorksheetFunction.HLookup(Range("C1"), Range("A1:E3"), 3)
Range("G3") = Application.WorksheetFunction.HLookup(Range("D1"), Range("A1:E3"), 1)
Range("H3") = Application.WorksheetFunction.HLookup(Range("D1"), Range("A1:E3"), 2)
Range("I3") = Application.WorksheetFunction.HLookup(Range("D1"), Range("A1:E3"), 3)
End Sub
producirá los siguientes resultados
Para los argumentos de la función (lookup_value, etc.), puede introducirlos directamente en la función, o definir variables para utilizarlos en su lugar.