Entschuldigen Sie, wenn die Antwort offensichtlich ist, ich verwende VBA erst seit einer Woche. Ich möchte die Zellen in einem separaten Blatt filtern und dann die verbleibenden Leerzeichen in der gefilterten Liste zählen. Ich habe die Codegrundlagen aus vorhandenen Antworten, habe sie mir also nicht selbst ausgedacht, und es funktioniert fast, aber ich dachte, ich frage mal, nachdem ich 3 Stunden darauf gestarrt und verschiedene Sachen ausprobiert habe.
Der Code erzeugt ein Ergebnis, es ist jedes Mal nur 1 mehr als korrekt, sodass in der gefilterten Liste zwei Leerzeichen vorhanden sind, die Ausgabe jedoch 3 ist. Habe alle möglichen Anpassungen an der Liste versucht, aber es ist immer 1 mehr als erwartet. Ich werde versuchen, Bilder der Liste anzuhängen, die ich filtere.
Ich habe auch Code, um das Ende des Bereichs dynamisch zu finden und den Filter anzuwenden. Ich werde auch eine Codezeile zum Aufheben des Filters hinzufügen, sobald ich diesen Teil zum Laufen gebracht habe.
Sub BlankCheck()
' Find last free row
Dim lRow As Long
lRow = Worksheets(2).Cells.Find(What:="*", _
After:=Range("A1"), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
' Filter
Worksheets(2).UsedRange.AutoFilter Field:=1, Criteria1:="test"
' Count visible blanks
Worksheets(1).Cells(1, 1) = Range(Worksheets(2).Cells(1, 2), Worksheets(2).Cells(lRow, 2)). _
SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants).Count
End Sub
Vielen Dank im Voraus für jede Hilfe.
Antwort1
Der Grund dafür 3
ist, dass Sie derzeit nach sichtbaren Zellen suchen, die Inhalt in der B
Spalte haben. Es umfasst also die Kopfzeile UND die beiden Zellen, die nach Anwendung des Filters Inhalt haben.
Wenn Ihr Ziel darin besteht, die Anzahl der leeren Zellen mit den Kriterien in Spalte A zurückzugeben, können Sie auch Folgendes verwenden:
Sub Test()
With ThisWorkbook.Worksheets("Sheet1")
Debug.Print Application.WorksheetFunction.CountIfs(.Range("A:A"), "test", .Range("B:B"), "")
End With
End Sub
Für Ihre Beispieldaten wird Folgendes zurückgegeben 2
: