De functie VERT.ZOEKEN verbeteren

Inhoud

Hoe pak je een parachute goed in?

Ten goede komen. Editie 2, herzien.

Laten we zeggen dat we de volgende tabel met bestellingen hebben:

De functie VERT.ZOEKEN verbeteren

We moeten bijvoorbeeld weten wat het bedrag was van Ivanovs derde order of wanneer Petrov zijn tweede deal uitvoerde. De ingebouwde VERT.ZOEKEN-functie kan alleen zoeken naar de eerste instantie van de achternaam in de tabel en zal ons niet helpen. Vragen als "Wie was de manager van ordernummer 10256?" zal ook onbeantwoord blijven, tk. de ingebouwde VERT.ZOEKEN kan geen waarden retourneren van kolommen aan de linkerkant van de zoekfunctie.

Beide problemen worden in één klap opgelost - laten we onze eigen functie schrijven die niet alleen naar de eerste, maar in het algemeen naar de N-de gebeurtenis zoekt. Bovendien kan het in alle kolommen zoeken en resultaten produceren. Laten we het bijvoorbeeld VERT.ZOEKEN2 noemen. 

Open de Visual Basic Editor door op ALT+F11 te drukken of door te selecteren in het menu Service – Macro – Visual Basic-editor (Extra — Macro — Visual Basic Editor), voeg een nieuwe module in (menu Invoegen – Module) en kopieer de tekst van deze functie daar:

Functie VERT.ZOEKEN2 (tabel als variant, zoekkolomnummer zo lang, zoekwaarde als variant, _ N zo lang, resultaatkolomnummer zo lang) Dim i As Long, iCount As Long Selecteer Case TypeName (Table) Case "Bereik" 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 Then iCount = iCount + 1 If iCount = N Then VLOOKUP2 = Table(i, ResultColumnNum) Exit For End If Next i End Selecteer End-functie  

Sluit de Visual Basic Editor en keer terug naar Excel.

Nu door Invoegen – Functie (Invoegen — Functie) in categorie User Defined (Gebruiker gedefinieerde) u kunt onze VERT.ZOEKEN2-functie vinden en gebruiken. De functiesyntaxis is als volgt:

=VLOOKUP2(tabel; number_of_column_where_we zoeken; lookup_value; N; number_of_column_from_to_get_value)

Nu zijn de beperkingen van de standaardfunctie geen belemmering voor ons:

De functie VERT.ZOEKEN verbeteren

PS Speciale dank aan The_Prist voor het verbeteren van de functie zodat het in gesloten boeken kan zoeken.

  • Gegevens zoeken en vervangen van de ene tabel naar de andere met behulp van de functie VERT.ZOEKEN
  • "Linker VERT.ZOEKEN" met behulp van de INDEX- en MATCH-functies

 

Laat een reactie achter