Förbättring av VLOOKUP-funktionen

Innehåll

Hur packar man en fallskärm korrekt?

Fördel. Upplaga 2, reviderad.

Låt oss säga att vi har följande ordertabell:

Förbättring av VLOOKUP-funktionen

Vi behöver till exempel veta hur mycket Ivanovs tredje order var eller när Petrov genomförde sin andra affär. Den inbyggda VLOOKUP-funktionen kan bara söka efter den första förekomsten av efternamnet i tabellen och hjälper oss inte. Frågor som "Vem var chef för ordernummer 10256?" kommer också att förbli obesvarade, tk. den inbyggda VLOOKUP kan inte returnera värden från kolumner till vänster om sökningen.

Båda dessa problem löses i ett svep – låt oss skriva vår egen funktion som kommer att leta inte bara efter den första utan, i det allmänna fallet, efter den N:e förekomsten. Dessutom kommer den att kunna söka och producera resultat i alla kolumner. Låt oss kalla det, säg, VLOOKUP2. 

Öppna Visual Basic Editor genom att trycka på ALT+F11 eller genom att välja från menyn Service – Makro – Visual Basic Editor (Verktyg — Makro — Visual Basic Editor), infoga en ny modul (meny Infoga – Modul) och kopiera texten till denna funktion dit:

Funktion VLOOKUP2(Tabell som variant, Sökkolumnnummer så lång, sökvärde som variant, _ N så lång, resultatkolumnnummer så lång) Dim i så lång, iCount så lång Välj Case TypeName(Table) Case "Range" För i = 1 Till 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()" För i = 1 Till UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 If iCount = N Then VLOOKUP2 = Tabell(i, ResultColumnNum) Exit For End If Next i End Välj slutfunktion  

Stäng Visual Basic Editor och återgå till Excel.

Nu genom Infoga – Funktion (Infoga — Funktion) i kategori Användardefinierad (Användardefinierad) du kan hitta vår VLOOKUP2-funktion och använda den. Funktionens syntax är följande:

=VLOOKUP2(tabell; antal_kolumn_där_vi letar efter; uppslagsvärde; N; antal_kolumn_från_till_get_värde)

Nu är begränsningarna för standardfunktionen inte ett hinder för oss:

Förbättring av VLOOKUP-funktionen

PS Speciellt tack till The_Prist för att ha förbättrat funktionen så att den kan söka i slutna böcker.

  • Söka efter och ersätta data från en tabell till en annan med funktionen VLOOKUP
  • "Left VLOOKUP" med funktionerna INDEX och MATCH

 

Kommentera uppropet