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:
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: