Takto jednoducho ? No jednoducho na jeden riadok ide v makre máločo. A navyše neefektívne pomaly. Ale dá sa to tak, že si nadefinujete Definovaný Názov "NAJDI" s rovnakým vzorcom:
=MATCH(Hárok1!$L$1&Hárok1!$M$1;Hárok1!$A:$A&Hárok1!$B:$B;0)
=POZVYHLEDAT(Hárok1!$L$1&Hárok1!$M$1;Hárok1!$A:$A&Hárok1!$B:$B;0)
z liste ho budete volať normálne :
=NAJDI
a vo VBA :
MsgBox Evaluate("=NAJDI")
Ale rýchlostne neefektívny je aj samotný vzorec, lebo počíta celé stĺpce (milión riadkov).
Ak môže byť makro dlhšie, ale rýchlejšie, dá sa aj inak.
Pr. (NoCaseSensitive):
Function NajdiFnc(Co As String, Optional Opacne As Boolean = False) As Long
Dim AB(), RA As Long, R As Long, i As Long
With List1
RA = .Cells(Rows.Count, 1).End(xlUp).Row
R = .Cells(Rows.Count, 2).End(xlUp).Row
RA = IIf(RA > R, RA, R)
AB = .Cells(1, 1).Resize(RA, 2).Value
R = Opacne And 1
For i = Array(1, RA)(R) To Array(RA, 1)(R) Step Array(1, -1)(R)
If StrComp(AB(i, 1) & AB(i, 2), Co, vbTextCompare) = 0 Then NajdiFnc = i: Exit For
Next i
End With
End Function
použitie zhora, zdola:
MsgBox NajdiFnc("AD")
MsgBox NajdiFnc("AD", True)citovat