Verbetering van die VLOOKUP-funksie

Contents [show]

Hoe om 'n valskerm behoorlik te pak?

Voordeel. Uitgawe 2, hersien.

Kom ons sê ons het die volgende tabel van bestellings:

Verbetering van die VLOOKUP-funksie

Ons moet byvoorbeeld weet wat die bedrag van Ivanov se derde bestelling was of wanneer Petrov sy tweede transaksie uitgevoer het. Die ingeboude VLOOKUP-funksie kan net soek vir die eerste voorkoms van die van in die tabel en sal ons nie help nie. Vrae soos "Wie was die bestuurder van bestelnommer 10256?" sal ook onbeantwoord bly, tk. die ingeboude VLOOKUP is nie in staat om waardes van kolomme aan die linkerkant van die soek een terug te gee nie.

Albei hierdie probleme word in een klap opgelos – kom ons skryf ons eie funksie wat nie net vir die eerste, maar, in die algemene geval, na die Nde voorkoms sal soek. Boonop sal dit in enige kolomme kan soek en resultate lewer. Kom ons noem dit, sê maar, VLOOKUP2. 

Maak die Visual Basic Editor oop deur ALT+F11 te druk of deur uit die kieslys te kies Diens – Makro – Visual Basic Editor (Gereedskap – Makro – Visual Basic Editor), voeg 'n nuwe module in (kieslys Voeg in – Module) en kopieer die teks van hierdie funksie daarheen:

Funksie VLOOKUP2(Tabel As Variant, SoekKolomNum So lank, SoekWaarde As Variant, _ N Solank, ResultaatKolomNum Solank) Dim i So lank, iTel so lank Kies Case TypeName(Table) Case "Range" Vir i = 1 To Table.Rows .Count If Table.Cells(i, SearchColumnNum) = SearchWalue Then iCount = iCount + 1 End If If iCount = N Then VLOOKUP2 = Table.Cells(i, ResultColumnNum) Exit For End If Next i Case "Variant()" Vir i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 If iCount = N Dan VLOOKUP2 = Table(i, ResultColumnNum) Uitgaan vir Einde Indien Volgende i Einde Kies Einde Funksie  

Maak die Visual Basic Editor toe en keer terug na Excel.

Nou deur Voeg in – Funksie (Voeg in — Funksie) in kategorie Gebruiker gedefinieerd (Gebruiker gedefinieerd) jy kan ons VLOOKUP2-funksie vind en dit gebruik. Die funksie sintaksis is soos volg:

=VOPSOEK2(tabel; aantal_kolom_waar_ons_ons soek; soekwaarde; N; aantal_kolom_van_na_waarde_kry)

Nou is die beperkings van die standaardfunksie nie 'n hindernis vir ons nie:

Verbetering van die VLOOKUP-funksie

PS Spesiale dank aan The_Prist vir die verbetering van die funksie sodat dit in geslote boeke kan soek.

  • Soek en vervang data van een tabel na 'n ander deur die VLOOKUP-funksie te gebruik
  • "Links VLOOKUP" met behulp van die INDEX- en MATCH-funksies

 

Lewer Kommentaar