Stránka 1 z 1

filtr v excelu

Napsal: 09 lis 2010 12:16
od nazdaar
Ahoj,zdravím všechny, mám prosbu, potřeboval bych v excelu 2003 poradit s filtrováním.
Nevím jestli to co potřebuju vůbec nějak půjde,ale třeba Vás něco napadne.
Mám tabulku zákazníků, u nich nějaká data jako č. faktury, částka a td. Potřebuju vyfiltrovat ty, kterří mají celkovou hodnotu 0 nebo menší a ty smazat, jenže chci smazat i jednotlivý hodnoty u nich, který ale můžou být kladný. Nenapadá Vás nějakej fígl? Mám to pro velký množství dat a mazat to ručně je dost náročný. Ukázka je v příloze. Díky za každý nápad

Snad jsem to popsal aspoň trochu srozumitelně:)

Re: filtr v excelu

Napsal: 09 lis 2010 12:48
od Poki
V prilozenem souboru je makro (na tlacitko), ktere ve sloupci F oznacni vsechny radky, ktere chcete smazat slovem "vymazat" - to uz potom snadno vyfiltrujete a smazete...

Re: filtr v excelu  Vyřešeno

Napsal: 09 lis 2010 13:30
od navstevnik
V editoru VBA vloz do standardniho modulu proceduru, spust F5.
Procedura odstrani prislusne radky. Vychozi setrideni podle Jmena se predpoklada.

Kód: Vybrat vše

Option Explicit

Sub Odstran()
  Dim Oblk As Range, OCll As Range
  Dim OldJm As String, TmpCll As String

  With Worksheets("list1")
    ' zrusit pripadny autofiltr
    .AutoFilterMode = False
    ' definovat blok jmen
    Set Oblk = .Range("c4:c" & .Cells(.Rows.Count, 3).End(xlUp).Row)
    OldJm = vbNullString
    ' prochazet blok a vyprazdnit odpovidajici radky, kdyz Celkem<=0
    For Each OCll In Oblk.Cells
      If OldJm <> OCll.Value Then
        OldJm = OCll.Value
        TmpCll = OCll.Address
      End If
      If OCll.Offset(0, -1).Value = "Celkem" Then
        If OCll.Offset(0, 2).Value <= 0 Then
          .Range(TmpCll & ":" & OCll.Address).EntireRow.ClearContents
        End If
      End If
    Next OCll
    ' po vyprazdneni radku setridit podle sloupce C
    Set Oblk = Oblk.Resize(Oblk.Rows.Count, 4).Offset(0, -1)
    Oblk.Sort Key1:=Range("c4"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  End With
  Set OCll = Nothing
  Set Oblk = Nothing
End Sub

Re: filtr v excelu

Napsal: 09 lis 2010 13:49
od nazdaar
Paráda, to je ono, jenom jsem neumětel a neumim VBA, ale dokázal jsem to tak nějak aplikovat na svůj dokument, ten je teda pokaždý trochu jinej, ale s tim se snad popasuju, každopádně jste mi ušetřil spoustu práce takže moc díky

Re: filtr v excelu

Napsal: 09 lis 2010 13:54
od nazdaar
navstevnik píše:V editoru VBA vloz do standardniho modulu proceduru, spust F5.
Procedura odstrani prislusne radky. Vychozi setrideni podle Jmena se predpoklada.

Kód: Vybrat vše

Option Explicit

Sub Odstran()
  Dim Oblk As Range, OCll As Range
  Dim OldJm As String, TmpCll As String

  With Worksheets("list1")
    ' zrusit pripadny autofiltr
    .AutoFilterMode = False
    ' definovat blok jmen
    Set Oblk = .Range("c4:c" & .Cells(.Rows.Count, 3).End(xlUp).Row)
    OldJm = vbNullString
    ' prochazet blok a vyprazdnit odpovidajici radky, kdyz Celkem<=0
    For Each OCll In Oblk.Cells
      If OldJm <> OCll.Value Then
        OldJm = OCll.Value
        TmpCll = OCll.Address
      End If
      If OCll.Offset(0, -1).Value = "Celkem" Then
        If OCll.Offset(0, 2).Value <= 0 Then
          .Range(TmpCll & ":" & OCll.Address).EntireRow.ClearContents
        End If
      End If
    Next OCll
    ' po vyprazdneni radku setridit podle sloupce C
    Set Oblk = Oblk.Resize(Oblk.Rows.Count, 4).Offset(0, -1)
    Oblk.Sort Key1:=Range("c4"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  End With
  Set OCll = Nothing
  Set Oblk = Nothing
End Sub



Tohle mi nefunguje,ale to je tím že to neumim upravit na svůj dokument:(, stejně díky