EXCEL: Ako použiť VLOOKUP pre hodnoty oddelené delimiterom

EXCEL: Ako použiť VLOOKUP pre hodnoty oddelené delimiterom

VLOOKUP je v Exceli velmi skveláfunkcia, ktorá nám umožňuje hľadať hodnotu v poli. Čo ale ak chceme hľadať niekoľko hodnôt naraz v danom poli? Máme predsa VBA!Takže čo v prípade že máme niekoľko hodnôt v každej bunke v stĺpci A a chceme týmto hodnotám priradiť hodnoty v stĺpci B? Názorná ukážka:

01

 

Máme produkty, máme kategórie, máme kategórie pridané k produktom a potrebujeme pridať aj ID kategórií ku každému produktu. Pokiaľ by sme mali pri každom produkte len jednu kategóriu, stačilo by použiť jednoduchý “VLOOKUP” vzorec, ktorý by hľadal hodnotu z bunky v stĺpci B v stĺpci F a priradil jej hodnotu zo stĺpca G. V našom prípade však máme viac kategórií priradených k produktu a preto musíme použiť svoju vlastnú funkciu, ktorú si naprogramujeme vo VBA.

Stačí len otvoriť položku Vývojár v Exceli a kliknúť na Visual Basic(prvá ikona vľavo). Klikneme na náš zošit pravým tlačítkom myši a zvolíme Vložiť ->Modul(Insert->Module). Otvorí sa nám editor Visual Basic a tu môžeme zadať náš kód.

Public Function MultiVLookup(Rozsah As Range, lookup As Range, col As Long) As String
    Dim hodnoty
    Dim i As Long
    Dim tmp As String
     
    hodnoty = Split(Rozsah.Value, “,”)
    For i = LBound(hodnoty) To UBound(hodnoty)
         
        If i <> UBound(hodnoty) Then
            If hodnoty(i) <> “” Then
                tmp = tmp & Application.VLookup(hodnoty(i), lookup, col, False) & “,”
            End If
        ElseIf i = UBound(hodnoty) Then
            If hodnoty(i) <> “” Then
                tmp = tmp & Application.VLookup(hodnoty(i), lookup, col, False)
            End If
        End If
        
    Next i
     
    MultiVLookup = tmp
End Function

Funkcia sa dá použiť nasledovne: =MultiVLookup(B2,$F$2:$G$7,2) – preklad: =MultiVLookup(hľadaj hodnotu bunky B2, v rozsahu buniek F2 až G7, vráť hodnotu v druhom stĺpci)

Výsledok:

02

Leave a Reply

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

This site uses Akismet to reduce spam. Learn how your comment data is processed.