TOP

Función mejorada VLOOKUP (VLOOKUP2)

Descripción

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?


Un ejemplo de un problema

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.

VBA código para la función 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í:

  1. Function VLOOKUP2(Table           As Range, _  
  2.                   SearchColumnNum As Integer, _  
  3.                   SearchValue     As Variant, _  
  4.                   N               As Integer, _  
  5.                   ResultColumnNum As Integer)          
  6.   'moonexcel.com.ua  
  7.   Dim i      As Integer  
  8.   Dim iCount As Integer  
  9.          
  10.   For i = 1 To Table.Rows.Count  
  11.     If Table.Cells(i, SearchColumnNum) = SearchValue Then  
  12.       iCount = iCount + 1  
  13.     End If  
  14.     If iCount = N Then  
  15.       VLOOKUP2 = Table.Cells(i, ResultColumnNum)  
  16.       Exit For  
  17.     End If  
  18.   Next i  
  19. 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)

Artículos sobre el tema: