< návrat zpět

MS Excel


Téma: hladanie retatzca rss

Zaslal/a 19.1.2010 19:52

zdravim

Potrebujem pomoct s napisanim vo VBA script ktory mi bude hladat podla vyberu v inputboxe retazec pricom ak sa nachadza viac hladanych totoznych retazcov tak tieto retazce budu skopirovane do noveho worksheetu

Dakujem za rady

Zaslat odpověď >

#001084
Jeza.m
Jeden příklad:
Public Sub hledej()
Dim retezec As String
retezec = InputBox("Hledaný výraz", "Hledej")
Dim radek As Single
radek = 2

For Each cell In Selection

If InStr(1, cell.Value, retezec, vbTextCompare) > 0 Then
List2.Cells(radek, 1) = cell.Value
radek = radek + 1
End If
Next

End Sub

M@citovat
#001088
avatar
zdravim

Je mozne to blizsie popisat napr . radek predstavuje samotny range?

If InStr(1, cell.Value, retezec, vbTextCompare) > 0 Then -- > znamena ze ak je hodnota v bunke totozna s retezec tak ,... ale potom nerozumiem preco je tam podmienka vacsi ako 0

za vysvetlenie dakujemcitovat
#001089
Jeza.m
Ahoj, tak já to teda zkusím popsat :-).
retezec = hledaná hodnota

radek = pocatecni radek listu dva kam se budou zapisovat hodnoty je-li podminka splnena

For each cell in selection = smyčka která prejede buňku po buňce v označené oblasti buňek (místo selection lze nastavit konkrétní range).

Instr = funkce pro vyhledání textového řetězce v textu

1 = počáteční znak odkud prohledávat

cell.value = prohledávaný text

retezec = viz výše

vbTextCompare = porovnávání textu

funkce Instr v případě nalezení řetězce v textu vrátí číslo odpovídající prvnímu nalezenému výskytu (pozice prvního znaku řetězce v prohledávaném textu), proto > 0, kdyby bylo =0 zanmená, že ho nenašel.

následující řádek zapíše do listu 2, sloupce 1 na řádek = radek hodnotu prohledávané buňky je-li splněna podmínka výše.

Je-li zapsáno přičte jeden řádek, do kterého bude v příštím cyklu smyčky zapisovat, bude-li splněna podmínka.

End if = konec podmínky

Next = jdi na další buňku výběru

S pozdravem
M@citovat
#001093
avatar
zdravim

Diky moc az teraz tomu rozumiem este raz dikcitovat
#001097
avatar
zdravim

no skusal som to prerobit aby mi neskopiroval ako vysledok len hladany retazec cize jednu bunku ale aby mi skopiroval cely riadok z hladaneho textu

napr. mam riadok 1 kde sa nachadzaju udaje v 14 stlpcoch pricom klucovy prvok pre hladani je stlpec A

no lenze po prepisani cell.value na range alebo vyhodi vba error este ma napadlo ci nepouzit prikaz na zistenie adresy hldanej bunky a nasledne skopirovat range ?

Viete mi poradit ?

Dakujemcitovat
#001113
Jeza.m
Zkuste to takto:
Public Sub hledej()
Dim retezec As String
retezec = InputBox("Hledaný výraz", "Hledej")
Dim radek As Single
radek = 2

For Each cell In Range("A:A")

If InStr(1, cell.Value, retezec, vbTextCompare) > 0 Then
List1.Rows(cell.Row).Copy
List2.Rows(radek).PasteSpecial xlPasteAll
radek = radek + 1
End If
Next

End Sub


zkopíruje to celý řádek a prohledávání už není definováno výběrem, ale sloupcem A.

M@citovat
#001117
avatar
dakujem velmi pekne ono skusal som to cez offset ale bolo to prilis neprehladne a dost zlozite na taku lahku operaciu kazdopadne diky moccitovat

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje