¿Cómo empacar correctamente un paracaídas?
Beneficio. Edición 2, revisada.
Digamos que tenemos la siguiente tabla de órdenes:
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:
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