TOP

Funcția îmbunătățită VLOOKUP (VLOOKUP2)

Descriere

Funcția încorporată VLOOKUP este una dintre cele mai puternice funcții din Excel. Dar are un dezavantaj semnificativ - găsește doar prima apariție a valorii dorite în tabel și numai în coloana din dreapta. Dar dacă ai nevoie de al 2-lea, al 3-lea și nu de ultimul?


Un exemplu de problemă

Să presupunem că avem un tabel de împrumuturi procesate ca acesta:

Trebuie să știm, de exemplu, care a fost valoarea celui de-al treilea împrumut acordat lui Mike sau când John și-a executat al doilea acord. Funcția încorporată VLOOKUP știe să caute doar prima apariție a unui nume în tabel și nu ne va ajuta.

Să scriem funcția noastră, care va căuta nu numai prima, ci și orice (a N-a) intrare ulterioară. Să-l numim, de exemplu, VLOOKUP2.

cod VBA pentru funcția VLOOKUP2

Deschide meniul Serviciu - Macro - Editor Visual Basic , introduceți noul modul (meniul Insert - Module) și copiați acolo textul acestei funcție:

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 

Închideți editorul Visual Basic și reveniți la Excel.

Acum, în Function Wizard, în categoria User Defined, puteți găsi și utiliza funcția noastră VLOOKUP2. Sintaxa funcției este următoarea:

=VLOOKUP2(masa ; coloană_număr_unde_căutăm ; valoare_cautata; număr_întrare ; coloană_număr_din_care_preluăm_valoarea )

Adică, pentru a găsi suma celui de-al treilea împrumut acordat lui Mike, va trebui să introduceți:

=VLOOKUP2(A2:A19 ; 1 ; „Mike”; 3 ; 4 )

Articole pe tema: