Gefilterte Daten markieren

Dieses Thema Gefilterte Daten markieren im Forum "Microsoft Office Suite" wurde erstellt von CDD, 28. Apr. 2005.

Thema: Gefilterte Daten markieren Hallo, ich habe folgendes Problem: ich möchte in einem Makro einen Filter über meine Daten laufen lassen und...

  1. CDD
    CDD
    Hallo,

    ich habe folgendes Problem: ich möchte in einem Makro einen Filter über meine Daten laufen lassen und möchte, dass der gesamte gefilterte Bereich markiert wird (allerdings ohne der Kopfzeile, denn die vom Filter gefundenen Werte sollen gelöscht werden.

    Hat jemand eine Idee, wie ich das hinbekommen kann? Vielen Dank für Eure Hilfe.

    CDD
     
  2. Hi CCD,

    soll das so ungefähr heissen, auf einem Arbeitsblatt Zeilen zu finden, die bestimmten Kriterien entsprechen und diese dann zu löschen?

    Welche Kriterien wären das denn z.B?

    Gruß Matjes :)
     
  3. CDD
    CDD
    Ja, genauso soll das werden
     
  4. Hi CDD,

    a) Welches Kriterieum in welcher Spalte soll geprüft werden ?
    b) Welches ist die erste Wertezeile ?

    Gruß Matjes :)
     
  5. CDD
    CDD
    Hallo Matjes!
    In vier verschiedenen Spalten (B, G, L, Q) sollen die Zeilen herausgefiltert werden, deren Wert in den benannten Zeilen unter 16 liegt. Wird in einer Zeile in einer der vier Spalten ein Wert <16 gefunden, soll die gesamte Zeile gelöscht werden.

    Vielen Dank für Deine Bemühungen.

    Gruß CDD
     
  6. Hi CDD,

    hier der gewünschte Makro.

    Gruß Matjes :)

    Code:
    Sub WertInSpalteBGLQUnter16ZeileLoeschen()
     ->ggf. Anpassen
      Const c_Z_ErsteWerteZeile = 2-> erste Zeile mit Statuseintrag
      
      Const c_SP_B = 2
      Const c_SP_G = 7
      Const c_SP_L = 12
      Const c_SP_Q = 17
      Const c_GrenzWert = 16
    
      Dim ws As Worksheet, l_ZeileMax As Long, l_tmp As Long, z As Long
      Dim l_1 As Double, l_2 As Double, l_3 As Double, l_4 As Double
      Dim s_Adresse As String
      
      Set ws = ActiveSheet
      
      l_ZeileMax = 0
      l_tmp = ws.Cells(ws.Rows.Count, c_SP_B).End(xlUp).Row
      If l_ZeileMax < l_tmp Then l_ZeileMax = l_tmp
      l_tmp = ws.Cells(ws.Rows.Count, c_SP_G).End(xlUp).Row
      If l_ZeileMax < l_tmp Then l_ZeileMax = l_tmp
      l_tmp = ws.Cells(ws.Rows.Count, c_SP_L).End(xlUp).Row
      If l_ZeileMax < l_tmp Then l_ZeileMax = l_tmp
      l_tmp = ws.Cells(ws.Rows.Count, c_SP_Q).End(xlUp).Row
      If l_ZeileMax < l_tmp Then l_ZeileMax = l_tmp
      
      Application.ScreenUpdating = False
      For z = l_ZeileMax To c_Z_ErsteWerteZeile Step -1
        
        If IsEmpty(ws.Cells(z, c_SP_B)) Then
          l_1 = 0
        ElseIf IsNumeric(ws.Cells(z, c_SP_B).Value) Then
          l_1 = ws.Cells(z, c_SP_B).Value
        Else
          s_Adresse = ws.Cells(z, c_SP_B).Address(RowAbsolute:=False, ColumnAbsolute:=False)
          MsgBox (in  & s_Adresse &  ist kein numerischer Wert. ->Abbruch)
          GoTo Aufraeumen
        End If
        
        If IsEmpty(ws.Cells(z, c_SP_G)) Then
          l_2 = 0
        ElseIf IsNumeric(ws.Cells(z, c_SP_G).Value) Then
          l_2 = ws.Cells(z, c_SP_G).Value
        Else
          s_Adresse = ws.Cells(z, c_SP_G).Address(RowAbsolute:=False, ColumnAbsolute:=False)
          MsgBox (in  & s_Adresse &  ist kein numerischer Wert. ->Abbruch)
          GoTo Aufraeumen
        End If
        
        If IsEmpty(ws.Cells(z, c_SP_L)) Then
          l_3 = 0
        ElseIf IsNumeric(ws.Cells(z, c_SP_L).Value) Then
          l_3 = ws.Cells(z, c_SP_L).Value
        Else
          s_Adresse = ws.Cells(z, c_SP_L).Address(RowAbsolute:=False, ColumnAbsolute:=False)
          MsgBox (in  & s_Adresse &  ist kein numerischer Wert. ->Abbruch)
          GoTo Aufraeumen
        End If
        
        If IsEmpty(ws.Cells(z, c_SP_Q)) Then
          l_4 = 0
        ElseIf IsNumeric(ws.Cells(z, c_SP_Q).Value) Then
          l_4 = ws.Cells(z, c_SP_Q).Value
        Else
          s_Adresse = ws.Cells(z, c_SP_Q).Address(RowAbsolute:=False, ColumnAbsolute:=False)
          MsgBox (in  & s_Adresse &  ist kein numerischer Wert. ->Abbruch)
          GoTo Aufraeumen
        End If
        
        If (l_1 < c_GrenzWert) Or (l_2 < c_GrenzWert) Or _
          (l_3 < c_GrenzWert) Or (l_4 < c_GrenzWert) Then
         ws.Rows(z).Delete
        End If
      Next
      Application.ScreenUpdating = True
      
    Aufraeumen:
      Set ws = Nothing
    End Sub
     
  7. CDD
    CDD
    Hallo Matjes,

    hab vielen Dank für Deine Hilfe. Klappt alles super. Hätte ich alleine nie hinbekommen.

    Gruß CDD
     
Die Seite wird geladen...

Gefilterte Daten markieren - Ähnliche Themen

Forum Datum
Datenrettung /sicherung Windows 10 Forum 22. Sep. 2016
Windows upgrade und datenverlust!? Windows 10 Forum 5. Juli 2016
Import Datensatz inkl = und - Zeichen in Excel/Libre CALC Software: Empfehlungen, Gesuche & Problemlösungen 20. Mai 2016
Datenrettung nach CRC-Fehler Datenwiederherstellung 18. Mai 2016
Windows 10 Build 10240 läßt sich nicht auf das Herbst-Updates updaten. Windows 10 Forum 7. Mai 2016