Wert in Spalte suchen und Zeile füllen mit VBA
Schritt-für-Schritt-Anleitung
- Öffne Excel und gehe zu dem Arbeitsblatt, in dem Du den Wert in Spalte A suchen möchtest.
- Drücke ALT + F11, um den VBA-Editor zu öffnen.
- Erstelle ein neues Modul:
- Klicke im Menü auf
Einfügen > Modul.
-
Füge den folgenden Code ein:
Sub Suche()
Dim letzteSpalteAuswertung As Long
Dim letzteZeileAuswertung As Long
Dim SchnittE As Double
SchnittE = 12.3 ' Beispielwert
letzteSpalteAuswertung = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
letzteZeileAuswertung = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets(1).Range(Cells(1, 1), Cells(letzteZeileAuswertung, 1))
Set c = .Find("Profilschnitt D", LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(, 2) = SchnittE ' Wert in Spalte C ausgeben
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Führe das Makro aus:
- Gehe auf
Entwicklertools > Makros und wähle Suche aus.
- Klicke auf
Ausführen.
Häufige Fehler und Lösungen
-
Fehler: "Objektvariable oder With-Blockvariable nicht gesetzt"
- Ursache: Stelle sicher, dass der Suchbegriff korrekt geschrieben ist und in der Spalte A existiert.
-
Fehler: Wert wird nicht in Spalte C ausgegeben
- Ursache: Überprüfe den Offset-Wert. Stelle sicher, dass Du
c.Offset(, 2) korrekt verwendest, um in die richtige Spalte zu schreiben.
-
Fehler: WorkBooks(1) führt zu einem Fehler
- Lösung: Verwende einfach
Sheets(1) anstelle von WorkBooks(1).Sheets(1).
Alternative Methoden
Falls Du keine VBA-Programmierung verwenden möchtest, kannst Du auch die SVERWEIS-Funktion in Excel nutzen:
- Syntax:
=SVERWEIS(Suchkriterium; Suchmatrix; Spaltenindex; [Bereich_Verweis])
- Beispiel:
=SVERWEIS("Profilschnitt D"; A:C; 3; FALSCH)
Diese Methode ist einfacher, wenn Du keine Programmierkenntnisse hast, bietet jedoch weniger Flexibilität.
Praktische Beispiele
Angenommen, Du hast folgende Werte in Spalte A:
| A |
B |
C |
| Profilschnitt D |
|
|
| Profilschnitt E |
|
|
| Profilschnitt D |
|
|
Wenn Du das oben genannte VBA-Skript ausführst, wird 12,3% in die Zellen C1 und C3 geschrieben, da der Suchbegriff "Profilschnitt D" gefunden wurde.
Tipps für Profis
-
Verwende Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
-
Nutze Fehlerbehandlung: Implementiere On Error Resume Next, um Fehler abzufangen und die Ausführung des Codes nicht zu stoppen.
-
Optimiere die Suchgeschwindigkeit: Wenn Du große Datenmengen hast, vermeide .FindNext, da dies die Leistung beeinträchtigen kann. Nutze stattdessen eine Schleife mit .Find.
FAQ: Häufige Fragen
1. Wie kann ich die Suche anpassen, um nach mehreren Begriffen zu suchen?
Du kannst eine Schleife verwenden, um durch ein Array von Suchbegriffen zu iterieren und die .Find-Methode für jeden Begriff aufzurufen.
2. Was kann ich tun, wenn ich die Suchmethode nicht verstehe?
Es empfiehlt sich, die Dokumentation zu VBA zu konsultieren oder Tutorials zu folgen, die grundlegende Konzepte von VBA und der .Find-Methode erklären.
3. Wie kann ich den Wert in einem bestimmten Format ausgeben?
Du kannst die Formatierung direkt in der Zelle festlegen, indem Du c.Offset(, 2).NumberFormat = "0,0%" verwendest, bevor Du den Wert zuweist.