Îmbunătățirea funcției VLOOKUP

Cuprins

Cum să împachetezi corect o parașută?

Beneficiu. Ediția 2, revizuită.

Să presupunem că avem următorul tabel de comenzi:

Îmbunătățirea funcției VLOOKUP

Trebuie să știm, de exemplu, care a fost valoarea celui de-al treilea ordin al lui Ivanov sau când Petrov și-a executat a doua afacere. Funcția VLOOKUP încorporată poate căuta doar prima apariție a numelui de familie din tabel și nu ne va ajuta. Întrebări precum „Cine a fost administratorul comenzii cu numărul 10256?” va rămâne, de asemenea, fără răspuns, tk. VLOOKUP încorporat nu este capabil să returneze valori din coloanele din stânga celei de căutare.

Ambele probleme sunt rezolvate dintr-o singură lovitură – să scriem propria noastră funcție care va căuta nu numai prima, ci, în cazul general, a N-a apariție. Mai mult, va putea căuta și produce rezultate în orice coloană. Să-i spunem, să zicem, VLOOKUP2. 

Deschideți Visual Basic Editor apăsând ALT+F11 sau selectând din meniu Serviciu – Macro – Editor Visual Basic (Instrumente — Macro — Editor Visual Basic), introduceți un nou modul (meniu Inserare – Modul) și copiați acolo textul acestei funcții:

Funcția VLOOKUP2(Table As Long, SearchColumnNum As Long, SearchValue As Variant, _ N As Long, ResultColumnNum As Long) Dim i As Long, iCount As Long Select Case TypeName(Table) Case "Range" 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 Case "Variant()" For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Apoi iCount = iCount + 1 If iCount = N Then VLOOKUP2 = Table(i, ResultColumnNum) Ieșire pentru End If Next i End Select End Function  

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

Acum prin Inserare – Funcție (Inserare — Funcție) în categoria Definit de utilizator (Definit de utilizator) puteți găsi funcția noastră VLOOKUP2 și o puteți utiliza. Sintaxa funcției este următoarea:

=CĂUTAREV2(tabel; număr_de_coloane_unde_căutăm; valoare_căutare; N; număr_de_coloane_de la_la_obține_valoare)

Acum, limitările funcției standard nu sunt o piedică pentru noi:

Îmbunătățirea funcției VLOOKUP

PS Mulțumiri speciale lui The_Prist pentru îmbunătățirea funcției, astfel încât să poată căuta în cărți închise.

  • Găsirea și înlocuirea datelor dintr-un tabel în altul folosind funcția CĂUTARE V
  • „Left VLOOKUP” folosind funcțiile INDEX și MATCH

 

Lasă un comentariu