Nur sichtbare Zellen in Excel verwenden
Schritt-für-Schritt-Anleitung
Um nur sichtbare Zellen in Excel zu verwenden, kannst Du den folgenden VBA-Code nutzen. Dieser Code sucht nach einem bestimmten Begriff in einem definierten Bereich und berücksichtigt dabei nur die sichtbaren Zellen.
- Öffne den VBA-Editor (Alt + F11).
- Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
- Kopiere den folgenden Code in das Modul:
Public Sub SucheNachSichtbarenZellen()
Dim Rng As Range
Dim xErste As Variant
Dim xAdresse As Variant
Dim iRowU As Long
Dim xSuche As Variant
Dim arr()
xSuche = InputBox("Suchbegriff:", "Suchen")
Set Rng = Worksheets("Tabelle1").Range("A1:E20").Cells.SpecialCells(xlCellTypeVisible).Find _
(xSuche, LookAt:=xlPart, LookIn:=xlValues)
If Not Rng Is Nothing Then
With Worksheets("Tabelle1")
xErste = Rng.Address(False, False)
Do Until xAdresse = xErste
ReDim Preserve arr(0 To 3, 0 To iRowU)
arr(0, iRowU) = .Cells(Rng.Row, 1)
arr(1, iRowU) = .Cells(Rng.Row, 2)
arr(2, iRowU) = .Cells(Rng.Row, 3)
arr(3, iRowU) = .Cells(Rng.Row, 4)
iRowU = iRowU + 1
Set Rng = .Range("A1:E20").FindNext(After:=Rng)
xAdresse = Rng.Address(False, False)
Loop
xAdresse = ""
xErste = ""
End With
End If
End Sub
- Starte das Makro, indem Du F5 drückst.
Dieser Code wird alle sichtbaren Zellen im Bereich A1:E20 durchsuchen und die Ergebnisse in einem Array speichern.
Häufige Fehler und Lösungen
-
Fehler: Objekt erforderlich
- Dieser Fehler tritt auf, wenn Du versuchst, mit einer nicht existierenden Range oder Zelle zu arbeiten. Stelle sicher, dass der Suchbegriff tatsächlich in den sichtbaren Zellen vorhanden ist.
-
Problem: Keine Ergebnisse
- Überprüfe, ob die Filter in der Tabelle aktiv sind. Wenn keine Zellen sichtbar sind, wird der Code keine Ergebnisse finden.
-
VBA sagt: .Find funktioniert nicht
- Achte darauf, dass Du die
SpecialCells(xlCellTypeVisible)
korrekt anwendest, um nur die sichtbaren Zellen zu berücksichtigen.
Alternative Methoden
Eine weitere Möglichkeit, um nur sichtbare Zellen zu verwenden, ist die Verwendung von Excel-Formeln, um die Daten vor der Verarbeitung zu filtern. Du kannst beispielsweise die AGGREGAT
-Funktion nutzen, um nur sichtbare Werte zu summieren oder zu zählen.
=AGGREGAT(3, 5, A1:A100)
Hier wird die Anzahl der sichtbaren Zellen im Bereich A1:A100 gezählt.
Praktische Beispiele
Hier ist ein einfaches Beispiel, wie Du den VBA-Code anpassen kannst, um die sichtbaren Zellen in eine Listbox zu füllen:
With UserForm1.ListBox1
.Clear
For i = 0 To UBound(arr, 2)
.AddItem arr(0, i)
.List(.ListCount - 1, 1) = arr(1, i)
.List(.ListCount - 1, 2) = arr(2, i)
.List(.ListCount - 1, 3) = arr(3, i)
Next i
End With
In diesem Beispiel wird die Listbox mit den sichtbaren Werten gefüllt, die im Array gespeichert sind.
Tipps für Profis
- Überlege, die
Find
-Methode zu optimieren, indem Du eine Fehlerbehandlung einfügst, um sicherzustellen, dass Dein Code robust ist.
- Nutze die
Application.ScreenUpdating = False
-Anweisung, um die Bildschirmaktualisierung während des Makroablaufs zu deaktivieren, was die Ausführung beschleunigt.
- Wenn Du häufig mit sichtbaren Zellen arbeitest, erwäge, eine Funktion zu erstellen, die Du immer wieder verwenden kannst.
FAQ: Häufige Fragen
1. Wie kann ich die sichtbaren Zellen in eine andere Tabelle kopieren?
Du kannst den gleichen Ansatz verwenden und die Copy
-Methode für die sichtbaren Zellen nutzen:
Worksheets("Tabelle1").Cells.SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Tabelle2").Range("A1")
2. Funktioniert der Code in Excel Online?
Leider funktioniert VBA nicht in Excel Online. Du musst die Desktop-Version von Excel verwenden, um diesen Code auszuführen.
3. Was mache ich, wenn mein Bereich sehr groß ist?
In solchen Fällen ist es ratsam, den Bereich zu optimieren oder die UsedRange
-Eigenschaft zu verwenden, um die Leistung zu verbessern.