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 aparición, sino también cualquier aparición 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 copie el texto de esta función allí:
Function VLOOKUP2(Table As Range, _ SearchColumnNum As Integer, _ SearchValue As Variant, _ N As Integer, _ ResultColumnNum As Integer) 'moonexcel.com.ua 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
Cerrar el editor Visual Basic y regrese a Excel.
Ahora en Asistentes de funciones en la categoría Usuario definido puede encontrar nuestra función VLOOKUP2 y utilizarla. 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)