Mejora de la función BUSCARV

Contenido

¿Cómo empacar correctamente un paracaídas?

Beneficio. Edición 2, revisada.

Digamos que tenemos la siguiente tabla de órdenes:

Mejora de la función BUSCARV

Necesitamos saber, por ejemplo, cuál fue el monto de la tercera orden de Ivanov o cuándo Petrov ejecutó su segunda operación. La función BUSCARV incorporada solo puede buscar la primera aparición del apellido en la tabla y no nos ayudará. Preguntas como "¿Quién fue el gerente de la orden número 10256?" también quedará sin respuesta, tk. la BUSCARV incorporada no puede devolver valores de las columnas a la izquierda de la búsqueda.

Ambos problemas se resuelven de una sola vez: escribamos nuestra propia función que buscará no solo la primera, sino, en el caso general, la enésima ocurrencia. Además, podrá buscar y producir resultados en cualquier columna. Llamémoslo, digamos, BUSCARV2. 

Abra el Editor de Visual Basic presionando ALT+F11 o seleccionando del menú Servicio – Macro – Editor de Visual Basic (Herramientas — Macro — Editor de Visual Basic), inserte un nuevo módulo (menú Insertar – Módulo) y copiar el texto de esta función allí:

Función BUSCARV2 (Tabla como variante, Número de columna de búsqueda tan largo, Valor de búsqueda como variante, _ N de largo, Número de columna de resultado tan largo) Dim i Como largo, iCuenta como largo Seleccionar caso Nombre de tipo (Tabla) Caso "Rango" For i = 1 To Table.Rows .Count If Table.Cells(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 End If If iCount = N Then VLOOKUP2 = Table.Cells(i, ResultColumnNum) Exit For End If Next i Case "Variant()" For i = 1 Para UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 If iCount = N Then VLOOKUP2 = Table(i, ResultColumnNum) Exit For End If Next i End Select End Function  

Cierre el Editor de Visual Basic y regrese a Excel.

Ahora a través de Función de inserción (Función de inserción) en categoría Definido por el usuario (Usuario definido) puede encontrar nuestra función VLOOKUP2 y usarla. La sintaxis de la función es la siguiente:

=BUSCARV2(tabla; número_de_columna_donde_buscamos; valor_buscado; N; número_de_columna_desde_hasta_obtener_valor)

Ahora las limitaciones de la función estándar no son un obstáculo para nosotros:

Mejora de la función BUSCARV

PS Un agradecimiento especial a The_Prist por mejorar la función para que pueda buscar en libros cerrados.

  • Encontrar y sustituir datos de una tabla a otra usando la función BUSCARV
  • "BUSCARV izquierda" usando las funciones ÍNDICE y COINCIDIR

 

Deje un comentario