ich habe ein Tabellenblatt "Daten". Dieses Blatt möchte ich in Spalte C nach einem String durchsuchen und jede Fundstelle in das Blatt "Start" kopieren.
Wie mache ich das?
Gruß Andi
Sub test()
'String aus Combobox
s = cboMasch.Value
Sheets("Daten").Select
For j = 2 To 60
If Cells(j, 3) = s Then
Sheets("Maschinenauswertung").Cells(22, 2).Value = "gefunden"
End If
Next
Sheets("Maschinenauswertung").Select
End Sub
Sub test()
For j = 3 To 60
If Cells(j, 3).Value = "test" Then
Cells(j, 3).Select
Selection.Interior.ColorIndex = 3
End If
Next
End Sub
Um eine Spalte in Excel nach einem bestimmten String zu durchsuchen, kannst du den folgenden VBA-Code verwenden. Dieser Code sucht in der Spalte C des Arbeitsblatts "Daten" nach einem eingegebenen Suchbegriff und kopiert die gesamten Zeilen mit entsprechenden Fundstellen in das Arbeitsblatt "Start".
Sub Var_MultiSeek()
Dim tarWks As Worksheet, srcWks As Worksheet
Dim rng As Range
Dim sAddress As String
Dim sFind As Variant
Dim cr As Long
Set tarWks = Worksheets("Start")
Set srcWks = Worksheets("Daten")
cr = 65536
If tarWks.Cells(cr, 1) = "" Then
cr = tarWks.Cells(cr, 1).End(xlUp).Row
End If
If cr = 0 Then cr = 1
sFind = InputBox("Bitte Suchbegriff eingeben:")
If sFind = "" Then Exit Sub
Set rng = srcWks.Range("C:C").Find(What:=sFind, lookat:=xlPart, LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
srcWks.Rows(rng.Row).Copy Destination:=tarWks.Rows(cr)
cr = cr + 1
Set rng = srcWks.Cells.FindNext(after:=rng)
If rng.Address = sAddress Then Exit Do
Loop
End If
MsgBox "Keine neue Fundstelle!"
End Sub
Fehler: "Variable nicht definiert"
Dim
für jede Variable verwendet wird.Fehler: "Suchbegriff nicht gefunden"
Fehler: "Bereich nicht gefunden"
Wenn du keine VBA-Makros verwenden möchtest, kannst du auch die integrierte Excel-Funktion FILTER
(ab Excel 365) nutzen, um Werte in einer bestimmten Spalte zu filtern:
=FILTER(Daten!C:C, Daten!C:C="Suchbegriff")
Diese Methode ist einfach zu implementieren und erfordert keine Programmierung.
Beispiel 1: Suche nach einem spezifischen Wert
Sub Test()
Dim s As String
s = "test" ' Hier den gesuchten String anpassen
For j = 3 To 60
If Cells(j, 3).Value = s Then
Cells(j, 3).Interior.ColorIndex = 3 ' Markiere die Zelle rot
End If
Next
End Sub
Beispiel 2: String aus einer ComboBox suchen
Sub TestCombo()
Dim s As String
s = cboMasch.Value
For j = 3 To 60
If Cells(j, 3).Value = s Then
Sheets("Maschinenauswertung").Cells(22, 2).Value = Cells(j, 3).Value
End If
Next
End Sub
Option Explicit
am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.With
-Anweisungen, um den Code lesbarer zu machen und die Leistung zu verbessern.1. Wie kann ich die Suche auf mehrere Spalten erweitern?
Du kannst die .Find
-Methode in einer Schleife für jede gewünschte Spalte aufrufen.
2. Kann ich den Suchbegriff direkt in den Code einfügen?
Ja, du kannst den Suchbegriff direkt in der Variable sFind
definieren, anstatt ihn über InputBox
abzufragen.
3. Wie gehe ich mit Groß- und Kleinschreibung um?
Die Find
-Methode ist standardmäßig nicht case-sensitive. Wenn du die Suche auf die Groß- und Kleinschreibung beschränken möchtest, setze das Argument MatchCase
auf True
.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen