Iskanje več 'stringov'

Pomoč pri izdelavi makrov
Odgovori
sonofagun
Prispevkov: 119
Pridružen: Če Mar 26, 2009 11:05 am

Iskanje več 'stringov'

Odgovor Napisal/-a sonofagun »

Pozdravljeni.

Naletel sem na težavo pri iskanju več različnih stringov znotraj teksta. Spodaj prilagam kodo, ki sem si jo pripravil za iskanje enega stringa:

Koda: Izberi vse

Sub filtriranje()

Dim SearchString As String

Dim SearchChar As String

SearchChar = InputBox("Vnesi ključno besedo:")

t = ActiveSheet.Range("a65536").End(xlUp).Row

For v = t To 3 Step -1
    SearchString = Cells(v, 4).Text
    If InStr(SearchString, SearchChar) = 0 Then
    Rows(v).Delete
    End If
Next

End Sub
Problem imam, ko bi rad, da mi po celicah v stolpcu 4 (vidno iz kode) išče več različnih stringov, ki bi jih podal v obliki, da so ločeni s podpičjem, npr.: "string1;string2;string3;string4;..." Skupno število teh stringov se spreminja (zato ne morem napisati kode za točno določeno število stringov), način iskanja pa bi bil če najdeš ali string1 ali string2 ali string3... potem briši stolpec...

Podobne kode na vašem forumu nisem našel, mogoče sem preveč na hitro pogledal :?

Hvala za pomoč.

Lep dan :)

Gregor
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Iskanje več 'stringov'

Odgovor Napisal/-a admin »

Pozdravljeni,

Postopek je dokaj preprost.
  1. Podan niz znakov (torej iskane besede, ki so ločene s podpičji) najprej razbijete na posamezne besede, kar naredi funkcija Split
  2. Kot rezultat omenjene funkcije dobite polje (array), kjer je vsaka beseda zapisana kot en element
  3. Ko v zanki iščete besede se namesto enega if stavka preprosto zapeljete preko celotnega polja in če najdete iskan element potem pač naredite tisto kar želite - torej brišete vrstico in nadaljujete
lp,
Matjaž Prtenjak
Administrator
sonofagun
Prispevkov: 119
Pridružen: Če Mar 26, 2009 11:05 am

Re: Iskanje več 'stringov'

Odgovor Napisal/-a sonofagun »

Torej bi najprej uporabil Split("string1;string2;string3;string4",";"), da bi dobil (v mojem primeru) SearchString=("string1","string2","string3","string4").

Za naprej pa sem malo zgubljen :shock: Jaz bi potem moral imeti kodo, ki mi vsak posamezen element iz Arraya išče po mojem obsegu... Torej bi bila koda v smislu For Each Object? in Array pa potem dalje If...? :roll:

LP

Gregor
sonofagun
Prispevkov: 119
Pridružen: Če Mar 26, 2009 11:05 am

Re: Iskanje več 'stringov'

Odgovor Napisal/-a sonofagun »

Sem se zmotil, rezultat Split funkcije bi bil SearchChar=("string1","string2","string3","string4")...
sonofagun
Prispevkov: 119
Pridružen: Če Mar 26, 2009 11:05 am

Re: Iskanje več 'stringov'

Odgovor Napisal/-a sonofagun »

Sem se zmotil, rezultat Split funkcije bi bil SearchChar=("string1","string2","string3","string4")...
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Iskanje več 'stringov'

Odgovor Napisal/-a admin »

sonofagun napisal/-a:Torej bi bila koda v smislu For Each Object? in Array pa potem dalje If...? :roll:
Da, preprosto zanka z if stavkom namesto enega if stavka.
lp,
Matjaž Prtenjak
Administrator
Odgovori