Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1492to1496
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
Inhaltsverzeichnis

VBA - Text finden und aus Tabelle ausgeben

VBA - Text finden und aus Tabelle ausgeben
18.05.2016 13:07:11
maxanaic
Hallo zusammen,
ich habe eine kniffeliges VBA Thema, das ich mit meinen wenigen VBA Kenntnissen nicht hinbekomme:
Im Tabellenblatt1 gibt es eine Tabelle mit Überschriften und dazugehörigen Werten darunter. Im Tabellenblatt2 gibt es eine Liste mit Text in jeder Zeile in der Wörter aus der Tabelle versteckt enthalten sind.
Die Aufgabe wäre nun, das VBA in jeder Zeile nach einem Wort aus der Tabelle in TB1 sucht und wenn er eines identifiziert hat, dann in der Spalte neben der Zeile, die dazugehörige Überschrift aus der Tabelle hinschreibt, wo er das Wort gefunden hat.
Im Anhang mal die Tabelle dazu. Und in Tabelle3 ist es gezeigt wie es nach der VBA Ausführung aussehen soll, damit es verständlicher ist.
https://www.herber.de/bbs/user/105619.xlsx
Wer kann mir hier helfen?
Danke
Maxaniac

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Text finden und aus Tabelle ausgeben
18.05.2016 13:23:17
ChrisL
Hi
Vielleicht nicht der effizienteste Code aber sollte funktionieren:
Sub Mach()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile1 As Long, iZeile2 As Long, iSpalte As Long
Dim bFound As Boolean
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
Application.ScreenUpdating = True
For iZeile1 = 2 To WS2.Cells(WS2.Rows.Count, 1).End(xlUp).Row
bFound = False
For iSpalte = 1 To WS1.Cells(1, WS1.Columns.Count).End(xlToLeft).Column
For iZeile2 = 2 To WS1.Cells(WS1.Rows.Count, iSpalte).End(xlUp).Row
If InStr(1, UCase(WS2.Cells(iZeile1, 1)), UCase(WS1.Cells(iZeile2, iSpalte))) > 0  _
Then
WS2.Cells(iZeile1, 2) = WS1.Cells(1, iSpalte)
bFound = True
Exit For
End If
Next iZeile2
If bFound Then Exit For
Next iSpalte
Next iZeile1
End Sub

cu
Chris

Anzeige
AW: VBA - Text finden und aus Tabelle ausgeben
18.05.2016 14:17:22
maxanaic
Super ChrisL,
das funktioniert einwandfrei. Schnelle und kompetente Anwort... Danke!
Jetzt muss ich den Code nur noch durchdringen in Ruhe damit ich diesen auch anwenden kann.
Gruß
Maxanaic

AW: VBA - Text finden und aus Tabelle ausgeben
18.05.2016 15:32:37
maxanaic
Hallo ChrisL,
jetzt hab ich mir mal den Code genauer angeschaut. Ich möchte ja lernen und deshalb möchte ich das auch verstehen. Was mir nicht so ganz klar ist für was die fett markierten folgenden Zeilen gut sind?
Ich hab diese mal ganz frech rausgeschmissen und wenn ich das mache, dann funktioniert das Script noch genauso (zumindest was man sehen kann)?
Sub Mach()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim iZeile1 As Long, iZeile2 As Long, iSpalte As Long
Dim bFound As Boolean
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
Application.ScreenUpdating = True
For iZeile1 = 2 To WS2.Cells(WS2.Rows.Count, 1).End(xlUp).Row
bFound = False
For iSpalte = 1 To WS1.Cells(1, WS1.Columns.Count).End(xlToLeft).Column
For iZeile2 = 2 To WS1.Cells(WS1.Rows.Count, iSpalte).End(xlUp).Row
If InStr(1, UCase(WS2.Cells(iZeile1, 1)), UCase(WS1.Cells(iZeile2, iSpalte))) > 0   _
_
Then
WS2.Cells(iZeile1, 2) = WS1.Cells(1, iSpalte)
 bFound = True
Exit For
End If
Next iZeile2
If bFound Then Exit For
Next iSpalte
Next iZeile1
End Sub
Danke
Maxanaic

Anzeige
AW: VBA - Text finden und aus Tabelle ausgeben
18.05.2016 17:39:50
ChrisL
Hi
ScreenUpdating ist Kosmetik und dient dazu, dass die einzelnen Arbeitsschritte nicht sichtbar sind resp. der Bildschirm nicht flackert (wenn das Makro mal etwas länger dauert).
Es laufen insgesamt 3 Schleifen in einander (darum bin ich auch nicht besonders Stolz auf den Code ;)
Wenn in der 3. Schleife etwas gefunden wird, wird diese 3. Schleife verlassen. Damit er nun nicht unnötigerweise die 2. Schleife abarbeitet, obwohl das Resultat bereits gefunden wurde, habe ich die Variable gesetzt und verlasse ggf. auch die 2. Schleife.
cu
Chris

AW: VBA - Text finden und aus Tabelle ausgeben
19.05.2016 06:39:50
Maxaniac
Hallo ChrisL,
ok, danke für die Erläuterung dazu.
Gruß
Maxaniac

Anzeige
AW: VBA - Text finden und aus Tabelle ausgeben
19.05.2016 08:17:28
ChrisL
Hi
Erst jetzt gesehen. ScreenUpdating müsste natürlich auf "False" stehen, sonst ist die Sache witzlos.
Application.ScreenUpdating = False
Nach Ablauf des Codes schaltet Excel automatisch wieder auf True.
cu
Chris

339 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige