< návrat zpět

MS Excel


Téma: Match(Array) rss

Zaslal/a 9.8.2014 22:29

Ahoj! Hledám způsob jak vyhledávat v části POLE. Mám např. POLE(1 to 10, 1 to 2). Když bych POLE vložil do Listu, získám 2 sloupce po 10 řadách. A já chci vyhledávat jen v jednom sloupci. Ví někdo jak na to ?

Zaslat odpověď >

Strana:  1 2   další »
#020995
avatar
ID = Application.Match(coF, Application.Index(Pole, , 1), 0)citovat
icon #020996
avatar
jj, než som to napísal, tak si na to prišiel:Sub MatchInColumn()
Dim myArr(1 To 10, 1 To 4), i As Integer
For i = 1 To 10
myArr(i, 1) = Chr(64 + i)
myArr(i, 2) = i
myArr(i, 3) = i + 10
myArr(i, 4) = Chr(74 + i)
Next i
'[A1].Resize(10, 4) = myArr 'TOTO TU JE LEN PRE KONTROLU
MsgBox "Hladam hodnotu 17 v 3.stlpci myArr"
MsgBox "Hodnota 17 sa nachadza na pozicii " & WorksheetFunction.Match(17, WorksheetFunction.Index(myArr, 0, 3), 0) & _
" v 3. stlpci myArr"
End Sub
citovat
#020997
avatar
Al díky! Ale pokračuju. Dám to sem, snad nevadí.Private Sub PoleRevEach()
For Each rdPV In Application.Index(Pole, , 1)
If rdPV = coF Then
' ID = rdPV.Index ''JAK VRATIT INDEX rdPV ?
End If
Next rdPV
End Sub
citovat
icon #020998
avatar
Nerozumiem, o čo sa pokúšaš. Skúsil by si to vysvetliť inak?citovat
#020999
avatar
Jen testuju rychlost vyhledávání položky v POLI. Teď mi vychází, že For Each je rychlejší než Match. Ale nevím jak vrátit Index(pořadí) nalezené položky, bez toho abych v tom cyklu připočítával ID=ID+1, dokud není položka nalezena.

edit:
Tak For ID je vůbec nejrychlejší.Private Sub PoleRevFor()
xCas = Timer
For ID = 1 To UBound(Pole, 1)
If coF = Pole(ID, 1) Then
MsgBox ID & " / " & Pole(ID, 1) & " / " & Pole(ID, 2), , "For = " & Timer - xCas
Exit For
End If
Next ID
End Sub
citovat
icon #021000
avatar
Aha, už chápem. To pri použití For each - Next bez pomocnej premennej zistiť asi nepôjde 7citovat
#021001
avatar
Díky Al. Mohl jsem to udělat hned tím nejjednodušším způsobem, ušetřil bych čas. Ale byl jsem zvědavý který způsob je nejrychlejší. Jinak WorksheetFunction.Match je na tom s rychlostí stejně jako Application.Match.citovat
icon #021002
avatar
Ale jo, rýchlosť behu kódu je bezpochyby jeden z dôležitých faktorov, pokiaľ má jeden čas toto riešiť 1. Inak ale, niet div, že WorksheetFunction.Match je na tom s rychlostí stejně jako Application.Match., páč je to, aspoň myslím, to samé 1citovat
#021015
avatar
@AL

"niet div, že WorksheetFunction.Match je na tom s rychlostí stejně jako Application.Match., páč je to, aspoň myslím, to samé"

Není, jsou rozdíly.citovat
icon #021017
avatar
@Lubo
Áno, WorksheetFuction, ktorej členom je Match, može byť buď Class alebo Application.Property, v oboch prípadoch ale na vrchole hierarchie stojí Application. To ma vedie, asi teda k chybnému záveru, že je to to isté. V čom je teda rozdiel?citovat

Strana:  1 2   další »

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

Čas od do

lubo • 19.4. 16:30

Makro smyčka

MilanKop • 19.4. 10:46

Makro smyčka

elninoslov • 19.4. 9:02

Čas od do

elninoslov • 19.4. 8:46

Čas od do

jarek1111 • 18.4. 13:46

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32