Stránka 1 z 1

makro na označení řádků s podmínkou  Vyřešeno

Napsal: 20 srp 2013 13:06
od r4ms3scz
Ahoj,

chtěl bych Vás poprosit o pomoc. Potřeboval bych makro, které označí řádky podle podmínky. Podmínka je ve sloupci B a potřebuji označit pouze řádky kde je "Email - Outbound" a následně tyto řádky smazat. Viz příloha. Snažil jsem se to nějak pobastlit sám pomocí makra, ale nejsem natolik zkušený abych to zvládl. Potřebuji to provést pomocí makra, nikoliv podmíněného formátování.

Zkoušel jsem variantu, nejprve použít filtr a poté dané řádky označit, ale vždy se mi označí i první řádek, který potřebuji zachovat.

Předem díky za pomoc

Re: makro na označení řádků s podmínkou

Napsal: 20 srp 2013 14:05
od cmuch
Vítej na PC-Help

Tady je jedno z možných řešení

Kód: Vybrat vše

Sub SmazVybraneRadky()
  Dim r As Long

  Application.ScreenUpdating = False

  For r = Rows.Count To 2 Step -1
    If Cells(r, "B") = "Email - Outbound" Then
      Rows(r).Delete
    End If
  Next r

  Application.ScreenUpdating = True
End Sub

Re: makro na označení řádků s podmínkou

Napsal: 20 srp 2013 14:25
od r4ms3scz
Ahoj,

diky za rychlou odpověď. Makro je super, nicméně excel pro který to potřebuji aplikovat obsahuje spousty výpočtů a pokud se řádky mažou postupně, excel to zahltí a buď spadne, nebo po každém umazání jednotlivého řádku přepočítává hodnoty a trvá to velice velice dlouho. Šlo by to vyřešit jinak? Např nejprve zapnutím filtru na danou hodnotu, následným označením všech řádků a smazáním všech řádků najednou?

napadlo me neco jako tohle, ale netusim jak to upravit :( oznací všechny radky ktere nejsou prazdne, ale ja potřebuji aby byl prvni radek zachovany

Kód: Vybrat vše

  Dim PosledniRadek As Long, i As Long
    Dim OznacOblast As Range

    With Sheets("List1")
        PosledniRadek = .Range("B" & .rows.Count).End(xlUp).Row

        For i = 1 To PosledniRadek
            If Len(Trim(.Range("B" & i).Value)) <> 0 Then
                If OznacOblast Is Nothing Then
                    Set OznacOblast = .rows(i)
                Else
                    Set OznacOblast = Union(OznacOblast, .rows(i))
                End If
            End If
        Next

        If Not OznacOblast Is Nothing Then
            ' tato oblast se může zkopírovat ... OznacOblast.Copy Sheets("List2").Rows(1)

            OznacOblast.Select
        End If
       
    End With