Při množství dat, s kterými pracuji je to dost zdlouhavé než se všechno přepočítá, chtěl bych ho předělat tak, aby fungovalo až když ho ručně spustím.
Zkoušel jsem to předělat sám ale nedaří se mi to.
Děkuji všem za pomoc.
Kód: Vybrat vše
Option Explicit
Function NajdiVice(Hledat As Variant, Oblast As Range, Prohledat_sloupek As Integer, Vzit_sloupek As Integer, Poradi As Integer) As Variant
' funkce na vyhledání položky v zadaném sloupci a v zadaném pořadí
' **** vysvětlivky ****
' Hledat = co hledat
' Oblast = oblast dat (tabulka) kde hledat a vybírat výsledky
' Prohledat_sloupek = číslo sloupce v oblasti dat který se má prohledat
' Vzit_sloupek = číslo sloupce ze kterého se bude brát výsledek hledání
' Poradi = pořadí výsledku který má najít
' ****
Dim a As Long, x As Integer
x = 1
With Oblast
For a = 1 To .Rows.Count
If .Cells(a, Prohledat_sloupek) = Hledat Then
If x = Poradi Then
NajdiVice = .Cells(a, Vzit_sloupek) 'vrací nalezenou hodnotu
Exit Function
Else
x = x + 1 'počítadlo pořadí shody
End If
End If
Next
End With
NajdiVice = CVErr(xlErrNA) 'vrátí chybu N/A když nenajde shodu
End Function