Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Find - zwei Strings gleichzeitig suchen

Find - zwei Strings gleichzeitig suchen
Werner
Hallo Freunde,
Kann ich mit "Find" nach zwei Strings gleichzeitig suchen, z. .B. nach dem
String "abc" in Spalte "A" und nach dem String "def" in Spalte B (angenommen, dass sich die beiden
Strings im gleichen Datensatz befinden)?
Oder muss ich, nachdem eine erste Find-Anweisung "abc" gefunden hat, zuerst die Zelle, in der "abc" steht, mit der Anweisung "Application.Goto" anspringen und von dort aus mit einer zweiten Find-Anweisung nach "def" in Spalte B suchen? Geht es eventuell einfacher als das? Werner R.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Find - zwei Strings gleichzeitig suchen
02.06.2008 07:25:18
Erich
Hallo Werner,
das geht ohne Select, Application.Goto und zweites Find.
Bei einem Treffer in der ersten Spalte musst du doch nur noch prüfen,
ob in Spalte B der Trefferzeile der 2. gesuchte Wert steht.
Probier mal die beiden Varianten:

Option Explicit
Sub Makro1()
Dim rngF As Range, lngR As Long
Set rngF = Columns(1).Find(What:="abc", _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not rngF Is Nothing Then
lngR = rngF.Row
Do
'        If Cells(rngF.Row, 2) = "def" Then           ' wenn "xlWhole"
If InStr(Cells(rngF.Row, 2), "def") > 0 Then ' wenn "xlPart"
MsgBox "Treffer in Zeile " & rngF.Row
Exit Do                                   ' Ende nach 1. Treffer
Else
Set rngF = Cells.FindNext(rngF)
If rngF Is Nothing Then Exit Do
End If
Loop While rngF.Row > lngR
End If
End Sub
Sub Makro2()
Dim rngF As Range, lngR As Long
Set rngF = Columns(1).Find(What:="abc", _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not rngF Is Nothing Then
lngR = rngF.Row
Do
'        If Cells(rngF.Row, 2) = "def" Then           ' wenn "xlWhole"
If InStr(Cells(rngF.Row, 2), "def") > 0 Then ' wenn "xlPart"
MsgBox "Treffer in Zeile " & rngF.Row
End If
Set rngF = Cells.FindNext(rngF)
If rngF Is Nothing Then Exit Do
Loop While rngF.Row > lngR
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Find - zwei Strings gleichzeitig suchen
Werner
Hallo Erich,
Dank f. deine Antwort!. Bin bin gerade erst wieder zugeschaltet (mir war etwas
dazwischen gekommen). Melde mich heute etwas später wieder,
weil ich deine Antwort erst auswerten muss.
R. Werner

meine Antwort
Werner
Hallo Erich,
soweit ich deinen Code verstehe, läuft er auf folgendes hinaus:
a) Zuerst wird nach dem ersten String, also nach "abc", gesucht.
b) Wenn gefunden, dann schaut der Makro in der Spalte rechts davon nach.
c) Wenn dort "def" gefunden wird, dann meldet die MsgBox einen Treffer
d) Ansonsten wird FindNext eingesetzt (das war für mich die zweite Find-Anweisung). Dann beginnt
die Schleife von neuem und der Makro prüft erneut beide Spalten.
Der zweite Makro macht in etwa dasselbe.
Herzlichen Dank! R. Werner

Anzeige
Danke für Rückmeldung - Alles klar! (owT)
03.06.2008 13:27:07
Erich

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige