2016-08-03 26 views
0

Sorry für die einfache Frage, immer noch ziemlich neu in VBA.VBA: Filtern und Löschen von Inhalten in Spalte

Ich habe eine Tabelle mit Spalten A-Z bestückt. Was ich tun möchte, ist Spalte C (enthält Mitarbeiter-ID) basierend auf ein paar Mitarbeiter zu filtern, und löschen Sie dann nur den Inhalt in Spalte Q (die Mitarbeiter Arbeitsstunden enthält), nur die sichtbaren Inhalte löschen.

Um klarer zu sein, würde ich Spalte C basierend auf einigen Kriterien filtern, dann gehe zu Spalte Z. In Spalte Z möchte ich nur den Inhalt in Spalte Z (nicht die gesamte Zeile), basierend auf den sichtbaren Zeilen löschen. Im Wesentlichen nach dem Filtern möchte ich alle sichtbaren Inhalte in der Spalte Z löschen. Die Anzahl der Zeilen für die Tabelle wächst ständig, daher kann ich nicht das verwenden, was ich gerade benutze, welches nur bestimmte Zellen auswählt und löscht die Inhalte. Hoffentlich macht das Sinn!

Antwort

3

Während Sie dies erreichen könnten, indem Sie sichtbare Zellen filtern und dann löschen, ist das Iterieren über Mitarbeiter-IDs und das Überprüfen ihres Wertes etwas einfacher. Dies funktioniert auch dann, wenn die Anzahl der Zeilen in Ihrer Tabelle zunimmt, vorausgesetzt, die Werte in Spalte C sind fortlaufend.

Sub ClearCells() 
    Dim employeeId As Range 
    Dim deleteIds As Variant 
    deleteIds = Array(14, 35, 17) ' Put your employee ids in here 
    For Each employeeId In Range(ActiveSheet.Range("C1"), ActiveSheet.Range("C1").End(xlDown)) 
     If Not (IsError(Application.Match(employeeId.Value, deleteIds, 0))) Then 
      ActiveSheet.Range("Z" & employeeId.Row).Value = "" 
     End If 
    Next 
End Sub