La función incorporada VLOOKUP es una de las funciones más poderosas de Excel. Pero tiene un inconveniente importante: sólo encuentra la primera aparición del valor deseado en la tabla y sólo en la columna del extremo derecho. ¿Pero si necesitas el segundo, el tercero y no el último?
Digamos que tenemos una tabla de préstamos procesados como esta:
Necesitamos saber, por ejemplo, cuál fue el monto del tercer préstamo otorgado a Mike o cuándo John ejecutó su segundo acuerdo. Función incorporada VLOOKUP sabe buscar sólo la primera aparición de un nombre en la tabla y no nos ayudará.
Escribamos nuestra función, que buscará no solo la primera, sino también cualquier entrada posterior (enésima). Llamémoslo, por ejemplo, VLOOKUP2.
abre el menú Servicio - Macro - Editor Visual Basic , inserte el nuevo módulo (menú Insert - Module) y copia allí el texto de esta función:
Function VLOOKUP2(Table As Range, _ SearchColumnNum As Integer, _ SearchValue As Variant, _ N As Integer, _ ResultColumnNum As Integer) Dim i As Integer Dim iCount As Integer 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 End Function
Cierre el editor Visual Basic y regrese a Excel.
Ahora, en el Asistente de funciones, en la categoría Definido por el usuario, puede buscar y utilizar nuestra función VLOOKUP2. La sintaxis de la función es la siguiente:
=VLOOKUP2(mesa ; número_columna_dónde_buscamos ; valor_buscado; número de entrada ; número_columna_de_la_que_tomamos_el_valor )
Es decir, para encontrar el monto del tercer préstamo otorgado a Mike, deberá ingresar:
=VLOOKUP2(A2:A19 ; 1 ; "Mike"; 3 ; 4 )