< návrat zpět

MS Excel


Téma: vyhledávání řádku makrem (2xpodmínka) rss

Zaslal/a 24.1.2019 14:28

ahoj všem
potřeboval bych maličko poradit (opět)

tímto vzorečkem (maticově) najdu hledaný řádek
=POZVYHLEDAT(L1&M1;A:A&B:B;0)

potřeboval bych stejně jednoduše totéž udělat makrem (vyhledat dle dvou hodnot v různých sloupcích) první výskyt v jedné řádce

a pokud by fungovalo, tak totéž,ale poslední výskyt
Předem mockrát děkuji

Zaslat odpověď >

#042541
avatar
Maticově to sice jde, pod VBA je FormulaArray (a co na to Záznamník maker?), ale přijde mi jednodušší si (skrytě) ty sloupce poslepovat a použít klasické vyhledávání.

Poslední výskyt se řeší buď přes VYHLEDAT, nebo třeba (POLÍČKO +)INDEX.citovat
#042544
elninoslov
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
#042559
avatar
Velice děkuji.
tak je to perfektní (špatně jsem se vyjádřil s tím"stejně jednoduchý")
vzorec jsem prozkoumal odzkoušel a vše funguje tak jak má(první verze bez"opačně).
Opačně jsem vyřešil (zase složitě) obráceným hledáním odspodu.
Ale tvoje řešení je pro mě zase mnohem lepší a snadnější.
znovu mnohokrát děkujicitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Vynásobit hodnoty kurzem - Power Query

Alfan • 24.4. 16:32

Relativní cesta - zdroje Power Query

Alfan • 24.4. 15:44

Relativní cesta - zdroje Power Query

elninoslov • 24.4. 14:26

Jak odstraním duplicitní údaje

Mirek8 • 24.4. 12:13

Jak odstraním duplicitní údaje

elninoslov • 24.4. 8:57

Vyhledej

PavDD • 24.4. 8:56

Vyhledej

elninoslov • 24.4. 8:47