Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
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

Zeichenfolgen aus Liste in Tabelle finden

Zeichenfolgen aus Liste in Tabelle finden
14.10.2019 13:39:46
T.
Hallo zusammen,
ich muss eine Tabelle mit Kundennamen nach bestimmten Begriffen durchforsten.
In A9:A2000 stehen die Kundennamen.
In E9:E50 stehen die verschiedenen Zeichenfolgen, nach denen in A9:A2000 gesucht werden soll.
In C9:C2000 soll ein „x“ als Ergebnis angezeigt werden, wenn in der Zeile ein Begriff aus der Suchliste gefunden wurde.
Leider habe ich keine Idee, wie ich das realisieren kann!? Vielleicht könnt ihr mir helfen? Ich würde mich freuen.

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeichenfolgen aus Liste in Tabelle finden
14.10.2019 13:55:55
Torsten
Hallo T.,
nach dem Schema mit VBA:

Sub suchen_finden()
Dim Zelle As Range, Rng As Range
Dim x As Long
Set Rng = ThisWorkbook.Sheets("Sheet2").Range("A9:A2000")
For x = 9 To 50
For Each Zelle In Rng
If Zelle.value  "" Then
If Zelle.value = ThisWorkbook.Sheets("Sheet2").Cells(x, 5).value Then
Zelle.Offset(0, 2) = "x"
End If
End If
Next
Next
End Sub
Gruss Torsten
AW: Zeichenfolgen aus Liste in Tabelle finden
14.10.2019 13:56:30
Torsten
Tabellenname noch anpassen
AW: Zeichenfolgen aus Liste in Tabelle finden
14.10.2019 14:43:14
T.
Hallo Torsten,
ich habe den VBA-Code jetzt übernommen und habe mein Tabellenblatt der Einfachheit halber in Sheet2 umbenannt.
Das Makro läuft durch, aber in Spalte gibt es leider kein "x" zu sehen!?
Die gesuchten Zeichenfolgen stehen nicht unbedingt am Anfang der Zellen in Spalte A...hätte ich das erwähnen müssen?
Anzeige
AW: Zeichenfolgen aus Liste in Tabelle finden
14.10.2019 15:01:35
Torsten
Hallo T.,
ja das sollte man wissen. Hatte angenommen, dass Text in E = Text in A sein soll. Aber wenn in E nur ein Teil von A steht, dann probier mal:

Sub suchen_finden()
Dim Zelle As Range, Rng As Range
Dim x As Long
Set Rng = ThisWorkbook.Sheets("Sheet2").Range("A9:A2000")
For x = 9 To 50
For Each Zelle In Rng
If Zelle.value  "" Then
MsgBox ThisWorkbook.Sheets("Sheet2").Cells(x, 5).value
If InStr(Zelle.value, ThisWorkbook.Sheets("Sheet2").Cells(x, 5).value) > 0 Then
Zelle.Offset(0, 2) = "x"
End If
End If
Next
Next
End Sub

Gruss Torsten
Anzeige
AW: Zeichenfolgen aus Liste in Tabelle finden
14.10.2019 15:04:02
Torsten
Sorry, nochmal kleine Korrektur. Vergessen, meine Messagebox zu entfernen und eine Pruefung vergessen. Bitte diesen Code:

Sub suchen_finden()
Dim Zelle As Range, Rng As Range
Dim x As Long
Set Rng = ThisWorkbook.Sheets("Sheet2").Range("A9:A2000")
For x = 9 To 50
For Each Zelle In Rng
If Zelle.value  "" Then
If ThisWorkbook.Sheets("Sheet2").Cells(x, 5)  "" Then
If InStr(Zelle.value, ThisWorkbook.Sheets("Sheet2").Cells(x, 5).value) > 0 Then
Zelle.Offset(0, 2) = "x"
End If
End If
End If
Next
Next
End Sub

AW: Zeichenfolgen aus Liste in Tabelle finden
15.10.2019 11:48:05
T.
Hallo Torsten,
jetzt funktioniert es. DANKE!
Sehe ich das richtig, dass die genau gleiche Schreibweise abgefragt wird? Kannst du das auch noch unabhängig von Groß- und Kleinschreibung machen? Das wäre großartig.
Anzeige
AW: Zeichenfolgen aus Liste in Tabelle finden
15.10.2019 11:55:22
T.
Und könnte am Ende evtl. noch eine MsgBox aufpoppen, die anzeigt, wie viele "x" gesetzt wurden?
AW: Zeichenfolgen aus Liste in Tabelle finden
15.10.2019 12:00:39
Torsten
Hallo nochmal,
na das ist das kleinere Uebel. Hier nochmal der gesamte Code incl. Messagebox:

Sub suchen_finden()
Dim Zelle As Range, Rng As Range
Dim x As Long, Zaehler As Long
Set Rng = ThisWorkbook.Sheets("Sheet2").Range("A9:A14")
Zaehler = 0
For x = 9 To 50
For Each Zelle In Rng
If Zelle.value  "" Then
If ThisWorkbook.Sheets("Sheet2").Cells(x, 5)  "" Then
If InStr(UCase(Zelle.value), UCase(ThisWorkbook.Sheets("Sheet2").Cells(x, 5). _
value)) > 0 Then
Zelle.Offset(0, 2) = "x"
Zaehler = Zaehler + 1
End If
End If
End If
Next
Next
MsgBox "Es wurden " & Zaehler & " Uebereinstimmungen gefunden"
End Sub

Gruss Torsten
Anzeige
AW: Zeichenfolgen aus Liste in Tabelle finden
15.10.2019 11:55:56
Torsten
Hallo T.,
ja, das siehst du richtig. Um das abzufangen, wandeln wir unsichtbar fuer uns (nur fuer VBA) beide Strings in den Variablen um, entweder in LCase(alles klein) oder UCase(alles gross). Ich machs hier mal mit UCase. Bitte diese Zeile ersetzen:
If InStr(Zelle.value, ThisWorkbook.Sheets("Sheet2").Cells(x, 5).value) > 0 Then

mit dieser:
If InStr(UCase(Zelle.value), UCase(ThisWorkbook.Sheets("Sheet2").Cells(x, 5).value)) > 0 Then

Gruss Torsten
AW: Zeichenfolgen aus Liste in Tabelle finden
15.10.2019 12:21:13
T.
Hallo Torsten,
ich habe das ausprobiert, aber nach Treffer 1 behauptet das Makro fertig zu sein und die Box poppt auf: "Es wurde 1 Übereinstimmung..."
Ich habe das Tabellenblatt Sheet jetzt in BPList umbenannt, auch im Makro, das jetzt also wie folgt aussieht:
Sub suchen_finden()
Dim Zelle As Range, Rng As Range
Dim x As Long, Zaehler As Long
Set Rng = ThisWorkbook.Sheets("BPList").Range("A9:A14")
Zaehler = 0
For x = 9 To 50
For Each Zelle In Rng
If Zelle.Value  "" Then
If ThisWorkbook.Sheets("BPList").Cells(x, 5)  "" Then
If InStr(UCase(Zelle.Value), UCase(ThisWorkbook.Sheets("BPList").Cells(x, 5). _
Value)) > 0 Then
Zelle.Offset(0, 2) = "x"
Zaehler = Zaehler + 1
End If
End If
End If
Next
Next
MsgBox "Es wurden " & Zaehler & " Uebereinstimmungen gefunden"
End Sub
Die Suchbegriffe aus E9:E50 würde ich gerne auf einem separaten Tabellenblatt "SearchItems" unterbringen!? Aber wie?
Ich habe dort eine "echte" Excel-Tabelle, die sich momentan von A1 (Überschrift) bis A21 erstreckt, aber natürlich auch noch wachsen kann...
Ich hätte meine Anpassungswünsche vielleicht besser vorab zusammenfassen sollen. Entschuldige bitte! :-)
Anzeige
AW: Zeichenfolgen aus Liste in Tabelle finden
15.10.2019 12:32:00
Torsten
aber die BPList faengt immernoch in Zeile 9 an?
AW: Zeichenfolgen aus Liste in Tabelle finden
15.10.2019 12:44:26
Torsten
Ja waere besser. Aber du hast Glueck, ich habe heute etwas Zeit.
Also ich verstehe so, dass die Suchbegriffe in Tabelle "SearchItems" in Spalte A ab A2 bis .... stehen. Und die zu findenden in Tabelle "BPList" auch in Spalte A ab A9.
Da sich beide Listen verlaengern koennen(denke ich), habe ich die letzte Zeile in beiden Tabellen variabel gemacht. Diese werden immer am Anfang des Makros festgestellt.
Ich habe auch, um Schreibarbeit zu sparen, die Worksheet Namen in Variablen gepackt.
So kannst du jetzt deine Suchbegriffe ruhig in deiner "SearchItems" Liste lassen. Es wird auch so verglichen.
Probiers mal aus.
Ach uebrigens zu deinem Einwand vorher: Ich hatte vergessen, die Range wieder auf 2000 anzupassen. Hatte diese verkleinert zu Testzwecken. Deshalb hat es dir nur ein Ergebnis angezeigt.
Hier der neue Code:

Sub suchen_finden()
Dim wsSearch As Worksheet, wsFind As Worksheet
Set wsSearch = ThisWorkbook.Sheets("SearchItems")
Set wsFind = ThisWorkbook.Sheets("BPList")
Dim Zelle As Range, Rng As Range
Dim x As Long, Zaehler As Long, lastSearch As Long, lastFind As Long
lastSearch = wsSearch.Cells(Rows.Count, 1).End(xlUp).Row
lastFind = wsFind.Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = wsFind.Range("A9:A" & lastFind)
Zaehler = 0
For x = 2 To lastSearch
For Each Zelle In Rng
If Zelle.value  "" Then
If wsSearch.Cells(x, 1)  "" Then
If InStr(UCase(Zelle.value), UCase(wsSearch.Cells(x, 1).value)) > 0 Then
Zelle.Offset(0, 2) = "x"
Zaehler = Zaehler + 1
End If
End If
End If
Next
Next
MsgBox "Es wurden " & Zaehler & " Uebereinstimmungen gefunden"
End Sub

Anzeige
AW: Zeichenfolgen aus Liste in Tabelle finden
15.10.2019 13:37:51
T.
Hallo Torsten,
Ich hätte da noch einen (hoffentlich) letzten Anpassungsbedarf. :-)
Die Importdatei, aus der heraus ich vergleichen will, musste ich anpassen.
In der BPList sind die Werte nicht mehr ab A9 zu finden, sondern ab G9.
Spalte C für das „x“ kann also bleiben.
Bei den SearchItems kommt eine Spalte B hinzu. Dieser Wert aus Spalte B soll dann in Spalte D der BPList geschrieben werden.
Es geht darum, dass den unterschiedlichen Werten aus Spalte A der SearchItems durchaus gleiche Werte in Spalte B zugeordnet sein können.
Stünde z.B. in Spalte A
- Audi
- BMW
- Lamborghini
- Skoda
ordne ich in Spalte B bei Audi, Lamborghini und Skoda den Wert „Volkswagen“ zu und bei BMW nur „BMW“. Und dieses „Volkswagen" & Co. soll dann entsprechend in Spalte D bei der BPList wiedergegeben werden.
Ist das verständlich ausgedrückt?
Anzeige
Offen, da ich in Urlaub gehe. Bitte helft ihm.
15.10.2019 13:43:11
Torsten
Sorry, ich mach jetzt Feierabend und heute abend gehts in Urlaub. Werde also nicht verfuegbar sein. Ich hoffe jemand anderes im Forum kann dir ab hier weiterhelfen.
Ich stelle dann mal auf offen.
AW: Zeichenfolgen aus Liste in Tabelle finden
15.10.2019 13:55:39
Daniel
Hi
Formel in C9:C2000
=Wenn(SummenProdukt(1*IstZahl(Suchen($E$9:$E$50;A2)));"x";"")
Gruß Daniel
AW: Zeichenfolgen aus Liste in Tabelle finden
16.10.2019 07:18:49
T.
@ Torsten:
Danke für deine Hilfe bis hierher! Einen schönen Urlaub! :-)
@ Daniel:
Vielen Dank für die Hilfe!
Es scheint aber, als würde die Formel nicht das gewünschte Ergebnis liefern…
Im Tabellenblatt „SearchItems“ stehen im Bereich A2-A… die Begriffe, nach denen gesucht wird und für die in Spalte C des Tabellenblatts „BPList“ ein „x“ gesetzt werden soll.
Im Bereich B2-B… stehen die Begriffe, die in Spalte D des Tabellenblatts „BPList“ übernommen werden soll.
Dadurch wird es möglich, die Ergebnisse aus Spalte C besser zusammenzufassen. Siehe dazu mein Beispiel mit Volkswagen.
Ich hoffe, ich konnte die Problemstellung etwas besser erklären!?
VG
Anzeige
AW: ist mit Formel schon einfach realisierbar ...
16.10.2019 18:26:04
neopa
Hallo,
... und zwar ist die von Daniel aufgezeigte schon im Prinzip die richtige für Deine Ausgangsfragestellung, nur dass er mE einen Schreibfehler in dieser zu stehen hat. Anstelle A2 wollte er sicher A9 schreiben.
Wo die Suchwerte dann wirklich stehen ist völlig egal, wenn Du diese Liste mit der Funktion "Als Tabelle formatieren" in eine "intelligente" wandelst (sind nur drei Mausklicks) Angenommen Du hast in Deiner Datei noch keine solche, so benennt Excel die automatisch zunächst als "Tabelle1" (nicht verwechseln mit einem evtl. gleichnamig vorhandenen Tabellenblattnamen!) Wenn Du als 1 Zeile dieser Liste als Überschrift z.B. "Suchdaten" zu stehen hast, dann lautet die Formel in C9 entsprechend:
=WENN(SUMMENPRODUKT(1*ISTZAHL(SUCHEN(Tabelle1[Suchdaten];A9)));"x";"")
und diese nach unten kopieren. Die "Suchdaten-Liste" kannst Du beliebig innerhalb der Datei auch nachträglich verschieben. Ich rate allerdings dazu deren Namen im Namensmanager in einen für Dich leichter erkennbaren umzubenennen (was zu jeder zeit auch nachträglich möglich wäre).
Alles weitere kannst Du analog selbst vornehmen oder Du stellst (D)eine Beispieldatei ein.
Gruß Werner
.. , - ...
Anzeige
AW: ist mit Formel schon einfach realisierbar ...
17.10.2019 07:11:37
T.
Hallo Daniel,
Hallo Werner,
Vielen Dank für die Formel bzw. Erklärung derselben.
Ich bin so bl.., dass ich noch nicht einmal erkannt habe, dass die Formel als Ersatz für VBA gedacht war!? :-|
Eigentlich formatiere ich alle Listen in diese „intelligenten“ Tabellen. Die erleichtern das Leben doch ungemein. :-)
Ich habe die Formel jetzt auf meine Datei angepasst und dann lautet die Formel wie folgt:
=WENN(SUMMENPRODUKT(1*ISTZAHL(SUCHEN(Tabelle2[Suchbegriffe];[@Kundenname])));"x";"")
Die Formel vergleicht ja die Begriffe in Spalte „Suchbegriffe“ der Tabelle2 mit den Werten, die in Spalte „Kundenname“ zu finden sind und schreibt dann ggf. ein „x“.
In Spalte „Gxx“ der Tabelle2 werden die Suchbegriffe allerdings auch noch kategorisiert in G01, G02 etc. Hierbei kann es durchaus vorkommen, dass unterschiedlichen Suchbegriffen die gleiche Kategorie zugeteilt wird.
Und genau diese Kategorienbezeichnung bräuchte ich nun in Spalte D. Also eine Formel, die erkennt, dass das Ergebnis der ersten Formel „x“ lautet und die dann prüft, zu welchem Suchbegriff das „x“ gehört und dann den entsprechenden Wert aus Spalte Gxx ausgibt…also irgendwie wie ein Verweis, nur anders. :-)
AW: Du vergist offensichtlich ...
17.10.2019 12:05:21
neopa
Hallo,
... dass die potentiellen Antworter nicht Deine Datei vor sich haben. Ein Nachstellen (so überhaupt möglich) ist für diese immer mit Aufwand verbunden. Warum stellst Du nicht (D)eine Beispieldatei (reduziert auf das Wesentliche und bei Erfordernis mit anonymisierten Daten) hier ein? Das erspart uns und auch Dir Zeit.
Gruß Werner
.. , - ...
AW: Du vergist offensichtlich ...
18.10.2019 14:01:07
T.
Hallo Werner,
Du hast vermutlich Recht. Wenn man davor sitzt, ist es wohl deutlich leichter zu verstehen. :-)
Anbei also eine vereinfachte Variante des Originals!
In „SearchItems“ sind in Spalte A also die Begriffe aufgelistet, nach denen in Spalte D der „BPList“ gesucht werden soll. Entsprechende Treffer werden in Spalte A der „BPList“mit einem „x“ ausgewiesen.
Und in jeder mit x markierten Zeile soll dann in Spalte B und C wiedergegeben werden, was in den Spalten B und C der „SearchItems“ passend zum Suchbegriff aufgelistet ist.
https://www.herber.de/bbs/user/132582.xlsx
Ich hoffe, dass die Erklärung zusammen mit der Datei nun einfacher nachzuvollziehen ist!? :-)
Viele Grüße,
Torsten
AW: mit einer "intelligenten" Matr.fkt.formel ...
18.10.2019 15:38:22
neopa
Hallo Torsten,
... die nicht nur keines spez. Formelabschluss wie eine klassische Matrixformel benötigt und so dank der "intelligenten" Tabellen definiert wurde, dass sie nicht nur nachträglich Datenerweiterungen automatisch berücksichtigt sondern auch nachträglich beide Tabellen beliebig verschoben werden können ohne die Formel ändern zu müssen und das nicht nur innerhalb des jeweiligen Tabellenblattes sondern übergreifend innerhalb der Arbeitsmappe.
In B2:

=WENN([@Company]="";"";INDEX(Tabelle2[ParentCompany];AGGREGAT(15;6;ZEILE(Tabelle2)/
SUCHEN(Tabelle2[[Suchbegriffe]:[Suchbegriffe]];INDEX(Tabelle1;ZEILE()-
ZEILE(Tabelle1[#Kopfzeilen]);4))^0;1)-ZEILE(Tabelle2[#Kopfzeilen])))

nach unten kopiert diese sich von allein, nach rechts kannst Du diese auch kopieren.
Gruß Werner
.. , - ...

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige