TOP

Función mejorada VLOOKUP (VLOOKUP2)

YouLibreCalc for Excel logo

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í:

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)

Artículos sobre el tema: