Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA nach mehreren Begriffen suchen

VBA nach mehreren Begriffen suchen
28.06.2024 16:56:01
MarC
Hallo zusammen,

ich habe zwei Tabellen. In Tabelle1 stehen die Begriffe nach denen ich suche und in Tabelle2 die Texte die durchsucht werden sollen. Der Suchbegriff steht immer links in der Zelle und daneben geht es dann weiter mit Text. Daher habe ich xlPart gewählt. Leider erhalte ich mit meinem Code weder eine Fehlermeldung noch ein Ergebnis obwohl die Begriffe im Text vorkommen. Hat jemand eine Idee wo bei mir der Hund begraben ist? Ich habe mehrere Punkte gesetzt um das Ergebnis bzw. den Vorgang im Code nachzuvollziehen aber ohne Erfolg.

Sub Pruefen()

Dim Gefunden As Range
Dim X As Integer
Dim Y As Integer
Dim LetzteZ1 As Long
Dim LetzteZ2 As Long

LetzteZ1 = Sheets("Tabelle1").Cells(Rows.Count, 3).End(xlUp).Row
LetzteZ2 = Sheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row

For X = 0 To LetzteZ1
For Y = 0 To LetzteZ2
With Sheets("Tabelle2")
Set Gefunden= .Cells(15 + Y, 2).Find(what:=Sheets("Tabelle1").Cells(15 + X, 3).Value, lookat:=xlPart)
End With
Next Y
Next X

If Ergebnis Is Nothing Then
MsgBox "Leider nichts gefunden"
Else
MsgBox Sheets("Tabelle2").Cells(Gefunden.Row, 2).Text
End If
End Sub
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA nach mehreren Begriffen suchen
28.06.2024 17:15:33
BoskoBiati2
Hi,

und wo ist die zugehörige Datei, damit man auch mal sieht wonach Du suchst?

Gruß

Edgar
AW: VBA nach mehreren Begriffen suchen
28.06.2024 17:16:25
ralf_b
nicht dein ernst.

wenn gefunden eine treffer hat, geht die schleife einfach weiter und überschreibt deinen treffer.
if ergebnis is nothing .... da Ergebnis nirgendwo eine Wert erhält ist es immer nothing.
Anzeige
Danke Ralf
28.06.2024 20:49:04
MarC
Danke Ralf das habe ich irgendwie nicht geblickt
AW: VBA nach mehreren Begriffen suchen
28.06.2024 17:16:52
Marc
wo wird denn
Ergebnis
auf true oder false gesetzt oder nothing?

Ich finde weder eine Deklarierung noch eine Zuweisung


AW: VBA nach mehreren Begriffen suchen
28.06.2024 17:36:14
daniel
da scheinen mir mehrere Dinge nicht ganz durchdacht zu sein.

es macht z.B. keinen Sinn, ein .FIND auf eine einzelne Zelle anzuwenden. Wenn du das machst, wird Excel immer das ganze Tabellenblatt durchsuchen. Erst wenn du vor .FIND einen Zellbereich angibst, der aus mindestens zwei Zellen besteht, wird nur dieser Bereich durchsucht.

probiers mal so:

Sub Pruefen()

Dim Gefunden As Range
Dim X As Integer
Dim Y As Integer
Dim LetzteZ1 As Long
Dim LetzteZ2 As Long

Dim Ergebnis As String

LetzteZ1 = Sheets("Tabelle1").Cells(Rows.Count, 3).End(xlUp).Row
LetzteZ2 = Sheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row

For X = 15 To LetzteZ1
Ergebnis = Ergebnis & vbLf & Sheets("Tabelle1").Cells(X, 3).Value & ":"
For Y = 15 To LetzteZ2
If Sheets("Tabelle2").Cells(Y, 2).Value Like Sheets("Tabelle1").Cells(X, 3).Value & "*" Then Ergebnis = Ergebnis & " B" & Y
Next Y
Next X

MsgBox Ergebnis

End Sub


Gruß Daniel
Anzeige
Danke funktioniert wunderbar
28.06.2024 20:44:35
MarC
Danke Daniel funktioniert wunderbar. Eine Frage hätte ich aber noch wie kann ich die ganzen nicht matches ausblenden? ich möchte nur die gefundenen sehen?

VG MarC
AW: Danke funktioniert wunderbar
28.06.2024 20:54:32
daniel
Sub Pruefen()

Dim Gefunden As Range
Dim X As Integer
Dim Y As Integer
Dim LetzteZ1 As Long
Dim LetzteZ2 As Long

Dim Ergebnis As String, ZwErg as String

LetzteZ1 = Sheets("Tabelle1").Cells(Rows.Count, 3).End(xlUp).Row
LetzteZ2 = Sheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row

For X = 15 To LetzteZ1
ZwErg = ""
For Y = 15 To LetzteZ2
If Sheets("Tabelle2").Cells(Y, 2).Value Like Sheets("Tabelle1").Cells(X, 3).Value & "*" Then ZwErg = ZwErg & " B" & Y
Next Y
If ZwErg > "" then Ergebnis = Ergebnis & vbLf & Sheets("Tabelle1").Cells(X, 3).Value & ":" & ZwErg
Next X

MsgBox Ergebnis

End Sub
Anzeige
Danke nochmal :-)
01.07.2024 07:43:58
MarC
Danke Daniel läuft super.
AW: VBA nach mehreren Begriffen suchen
28.06.2024 19:54:58
Piet
Hallo

ohne eine Datei zum Testen mal dein eigener Code, nur etwas umgestrickt. - Ich hoffe es klappt.

mfg Piet

Sub Pruefen()

Dim Gefunden As String
Dim Txt1 As String
Dim Txt2 As String
Dim X As Integer
Dim Y As Integer
Dim n As Integer
Dim LetzteZ1 As Long
Dim LetzteZ2 As Long
Dim Tb1 As Worksheet

With Sheets("Tabelle2")
Set Tb1 = Sheets("Tabelle1")
LetzteZ1 = Tb1.Cells(Rows.Count, 3).End(xlUp).Row
LetzteZ2 = .Cells(Rows.Count, 2).End(xlUp).Row

For X = 15 To LetzteZ1
Txt1 = Tb1.Cells(X, 3) 'Begriffe
If InStr(Gefunden, Txt1) = 0 Then
For Y = 15 To LetzteZ2
Txt2 = .Cells(Y, 2) 'such Texte
If InStr(Txt2, Txt1) Then
If InStr(Gefunden, Txt1) = 0 Then
Gefunden = Gefunden & Y & " " & Txt1 & vbLf
n = n + 1
End If
End If
Next Y
End If
Next X
End With

If Gefunden = Empty Then
MsgBox "Leider nichts gefunden"
Else
MsgBox n & " Treffer:" & vbLf & Gefunden
End If
End Sub
Anzeige
AW: VBA nach mehreren Begriffen suchen
28.06.2024 17:29:40
BoskoBiati2
Hi,

probier mal das:

Sub Pruefen()

Dim X As Long
Dim LetzteZ1 As Long
Dim LetzteZ2 As Long
Dim Ergebnis

LetzteZ1 = Sheets("Tabelle1").Cells(Rows.Count, 3).End(xlUp).Row
LetzteZ2 = Sheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row

With Sheets("Tabelle2").Range("B15:B" & LetzteZ2)
For X = 15 To LetzteZ2
Set Ergebnis = .Find(what:=Sheets("Tabelle1").Cells(X, 3).Value, lookat:=xlPart)
Next
End With

If Ergebnis Is Nothing Then
MsgBox "Leider nichts gefunden"
Else
MsgBox Ergebnis
End If
End Sub


Gruß

Edgar
Anzeige
AW: VBA nach mehreren Begriffen suchen
28.06.2024 17:34:08
BoskoBiati2
Hi,

ist noch ein Fehler drin:

Sub Pruefen()

Dim X As Long
Dim LetzteZ1 As Long
Dim LetzteZ2 As Long
Dim Ergebnis

LetzteZ1 = Sheets("Tabelle1").Cells(Rows.Count, 3).End(xlUp).Row
LetzteZ2 = Sheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row

With Sheets("Tabelle2").Range("B15:B" & LetzteZ2)
For X = 15 To LetzteZ2
Set Ergebnis = .Find(what:=Sheets("Tabelle1").Cells(X, 3).Value, lookat:=xlPart)
If Ergebnis Is Nothing Then
MsgBox "Leider nichts gefunden"
Else
MsgBox Ergebnis
End If
Set Ergebnis = Nothing
Next
End With


End Sub


Gruß

Edgar
Anzeige
Danke Edgar
28.06.2024 20:55:45
MarC
Sorry das ich mich erst jetzt melde aber ich habe versucht eure Codes nachzuvollziehen. Auf jeden Fall funktioniert dein Code wunderbar. Die Meldung mit "Leider nichts gefunden" habe ich falsch gesetzt. Es soll zwar jede Begriff gesucht werden, aber nur die gefundenen matches gezeigt werden und wenn gar kein match da ist dann soll es nur einmal heißen "leider nichts gefunden". Vielleicht bekomme ich das noch selben. Vielen Dank auf jeden Fall.
Anzeige
AW: Danke Edgar
29.06.2024 07:29:59
Oberschlumpf
Hi,

wenn nur Treffer zeigen das Ziel ist, dann versuch es so:

Änder diesen Code...


If Ergebnis Is Nothing Then
MsgBox "Leider nichts gefunden"
Else
MsgBox Ergebnis
End If

...um in...


If Not Ergebnis Is Nothing Then
MsgBox Ergebnis
Set Ergebnis = Nothing
End If

Das sollte eigtl helfen...oder?

Ciao
Thorsten
Anzeige
Danke Thorsten hat funktioniert
01.07.2024 07:32:27
MarC
Ich habe deine Lösung gewählt. Davor habe ich einfach die Meldung MsgBox "Leider nichts gefunden" ausgeblendet. Danke nochmal
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige