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 apariție ulterioară (a N-a). 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ții:

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 

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

Acum in Vrăjitorii de funcții în categorie Definit de utilizator puteți găsi funcția noastră VLOOKUP2 și o puteți utiliza. 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: