Stránka 1 z 1

VBA - mazaní řádků na základě vyhledání klíčového slova  Vyřešeno

Napsal: 22 led 2015 19:15
od Marena.net
Zdravím,

chtěl bych někoho poprosit, jestli někdo nemá někde schovaný kód do VBA pro Excel, který umí následující:

Je-li v řádku kdekoliv k nalezení klíčové slovo (dejme třeba "auto"), smaž celý řádek
Takhle procházej celý sheet a smaž všechny řádky, ve kterém se toto klíčové slovo nachází
Je důležité, že to nesmí být stylem "hodnota buňky = "auto" - smaž řádek", ale představte si to cca tak, že byste označili řádek, CTRL+F, pokud bylo "auto" nalezeno, tak smaž řádek - a takhle procházet řádek po řádku

Podobné tématko už tu bylo, ale tam se jednalo o něco trochu jiného... :dontgetit:

Děkuji!

--- Doplnění předchozího příspěvku (22 Led 2015 20:12) ---

tak jsem našel toto:

Kód: Vybrat vše

Dim rng As Range, cell As Range, del As Range
Set rng = Intersect(Range("A:BQ"), ActiveSheet.UsedRange)
For Each cell In rng
If cell.Value Like "auto" _
Then
If del Is Nothing Then
Set del = cell
Else: Set del = Union(del, cell)
End If
End If
Next cell
On Error Resume Next
del.EntireRow.Delete

Pro mě to funguje skvěle, ovšem bych potřeboval, aby to fungovalo i když je v buňce něco jiného, než auto. Zkoušel jsem tam dát "*auto*", ale to nefunguje. Nějaké sugesce prosím?

--- Doplnění předchozího příspěvku (22 Led 2015 20:52) ---

zkusil jsem to udělat touto metodou:
Všechny buňky s klíčovým slovem jsem vyhledal a nahradil právě tím klíčovým slovem a to takto:

Kód: Vybrat vše

Cells.Select
    Selection.Replace What:="*bearer*", Replacement:="bearer", LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False


Bohužel, z nějakého důvodu pak přestane fungovat kód viz výše.

--- Doplnění předchozího příspěvku (22 Led 2015 22:31) ---

Poradil jsem si nakonec sam, tady je vysledek:

Kód: Vybrat vše

'Smazani beareru
Cells.Select
    Selection.Replace What:="*bearer*", Replacement:="bearer", LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Dim pomocnaBearer As Range
   Dim SrchRng

   Set SrchRng = ActiveSheet.UsedRange
   Do
       Set pomocnaBearer = SrchRng.Find("bearer", LookIn:=xlValues)
       If Not pomocnaBearer Is Nothing Then pomocnaBearer.EntireRow.Delete
   Loop While Not pomocnaBearer Is Nothing

Mnoho lidi by reklo ze to neni elegantni reseni ale funguje spolehlive a rychle. V urcitem smyslu take setri spotrebu vykonu.