Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Nach mehreren strings in einem string suchen

Nach mehreren strings in einem string suchen
05.04.2017 13:32:02
Manfred
Hallo allerseits, einen Teil meiner Problemlösung fand ich bereits in unten einkopierten Archivbeitrg.
Ich bräuchte allerdings nicht nur die Anzeige DASS ein string gefunden wurde, sondern WELCHER (wobei multiple Lösungen nicht berücksichtigt werden müßen, da immer nur ein string vorkommen kann). D.h. die Formel müßte bei mir nicht einfach "Treffer" ausgeben, sondern den string der gefunden wurde.
Kann mir jemand helfen ?
quote
Das Grundproblem ist folgendes: Ich möchte eine Zelle durchsuchen lassen, ob sie einen bestimmten String beinhaltet. Die Grundstruktur der Formel ist demnach ISTZAHL(SUCHEN;suchbegriff, bereich, ab Zeichen). Da SUCHEN die Position des Textstrings in der Zelle als Zahl angibt, habe ich ISTZAHL eingebaut, um die Fehler, also wenn nichts gefunden wird abzufangen. Nichts gefunden = keine Fundstelle = keine Zahl.
Wenn ich mehrere Suchbegriffe die optional sind, d.h. entweder findest du Test1 oder du findest Test2. (Beides sind „Treffer“), kombinieren möchte, kann ich das mit ODER tun. Logik: WENN(ODER(ISTZAHL(SUCHEN;Test1));ISTZAHL(SUCHEN;Test2)). Bei mehreren Strings wird dies aber eine ziemlich lange Formel. Ich habe nun entdeckt, daß sich das mit einer Array Formel kürzen läßt. Dabei gebe ich nicht nur einen String als Suchreferenz an, sondern gleich 3 (oder mehr!) Zellen, in denen die Suchstrings stehen. Und zwar nicht einzeln, sondern als Bereich A2:A4. Die Formel such nun erst nach A1 in der Suchzelle, dann A2, dann A3 je nachdem, welche Strings gefunden wurden, steht im Formelassistenten dann WAHR/ FALSCH/ WAHR oder FALSCH/ WAHR/ WAHR, etc. In den Grundzügen scheint das also schon zu funktionieren. Ich habe diese Formel in eine WENN Formel gepackt. Wenn der String gefunden wird, dann soll das Wort „Treffer“ erscheinen, ansonsten 0. Das Problem ist nun, daß nur „Treffer“ angezeigt wird, wenn die Kombination WAHR, x, x auftritt. Also sobald die erste Prüfung in der Array WAHR ist, stimmt es. Wenn FALSCH das erste Ergebnis wäre, würde die Formel eine 0 liefern – Auch wenn dahinter WAHR, WAHR kommt.
Ich brauche nun eine Idee, wie ich das Ergebnis in der WENN Prüfung auf WAHR bekomme, sobald eine Prüfung in der Array Formel WAHR ist – Auch wenn x beliebig andere FALSCH sind, da der Suchstring nicht gefunden wurde.
.....
du musst bei solchen Formel einem kleinen Umweg gehen, und zwar aus dem von dir geschilderten Grund;
hier deine Formel etwas angepasst sollte gehen;
{=WENN(SUMME(--ISTZAHL(SUCHEN($A$2:$A$5;$C4;1)))>0;"Treffer";0)}
unquote
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach mehreren strings in einem string suchen
05.04.2017 13:36:22
ransi
HAllo MAnfred,
HAst du mal eine kleine Beispieltabelle?
ransi
AW: Nach mehreren strings in einem string suchen
05.04.2017 13:52:06
Manfred
Ich versuche es mit einer Beschreibung. In Spalte A habe ich eine Liste mit längeren Textstrings, z.B. in Zelle A1:
WEG Offenburger Str. 1-5 VS/0000700723 WEGEN Wohnlast 01/201 7 End-to-End-Ref
Wie man sieht, sind dies Buchungstexte aus Kontobuchungen.
In Spalte B soll eine Formel stehen welche die nebenstehenden textstrings auf Begriffe durchsucht die
in einem anderen Blatt des workbooks in einer festen Liste stehen, nennen wir den Bereich "Kürzel":
ALDI
REWE
Lidl
Just fit
Offenburger
.... etc
In obigem Beispiel sollte also die Formel in Zelle B1 "Offenburger" ausgeben.
Anzeige
AW: Nach mehreren strings in einem string suchen
05.04.2017 14:23:56
Daniel
Hi
1. deine Kürzelliste steht in der Tabelle2!A1:A6
2. in der ersten Zeile der Kürzelliste muss der Hinweis stehen: "#kein Treffer"
3. in die Zelle B1 kommt diese Formel, es ist eine Matrixformel, dh die Eingabe muss immer mit STRG+SHIFT+ENTER abgeschlossen werden:
=INDEX(Tabelle2!$A$1:$A$6;MIN(WENN(ISTZAHL(FINDEN(Tabelle2!$A$1:$A$6;A1));ZEILE(Tabelle2!$A$1:$A$6))) )
sollte die Formel keinen Treffer finden, so wird sie den ersten Wert der Trefferliste als Ergebnis liefern. Daher muss dort die Hinweismeldung stehen.
Gruß Daniel
Anzeige
AW: Nach mehreren strings in einem string suchen
05.04.2017 14:55:44
Manfred
Danke Daniel, die Formel findet tatsächlich Begriffe, nur leider zeigt er falsche Ausgaben. Ich muß erst noch verstehen wie deine Formel funktioniert, muss irgendwie an den Index/zeilennummern liegen
AW: Nach mehreren strings in einem string suchen
05.04.2017 15:06:16
Manfred
Deine Formel gibt als Ausgabe leider nur den Eintrag der in Tabelle2 in der gleichen reihe steht wie die reihennummer der Zelle in der die Formel steht
Anzeige
AW: Nach mehreren strings in einem string suchen
05.04.2017 15:08:46
Daniel
zeige bitte deine Datei und deine Formel.
(bitte Beispieldatei hochladen)
Gruß Daniel
AW: Nach mehreren strings in einem string suchen
05.04.2017 15:26:21
Manfred
Nachdem ich Kopfzeilen gelöscht habe, werden die richtigen strings gefunden. Ist mir schleierhaft warum aber hauptsache es geht. Vielen Dank !
AW: Nach mehreren strings in einem string suchen
05.04.2017 15:07:31
Daniel
Hi
gib mal für die Index-Funktion die ganze Spalte an: =Index(Tabelle2!$A:$A;Min(...
ansonsten: zeig mal deine Datei.
Gruß Daniel
Anzeige
AW: Nach mehreren strings in einem string suchen
05.04.2017 14:05:33
Barbaraa
Hallo Manfred,
warum suchst Du nicht nach nur einem Text pro Formel und addierst dann die Suchergebnisse zusammen?
Dann brauchst Du zwar für jeden Suchbegriff eine Zelle zusätzlich, aber es ist übersichtlicher.
Angenommen, der zu durchsuchende Text steht in A1.
Die Suchtexte stehen untereinander, beginnend mit B2, und jeweils daneben:
=WENN(ISTFEHLER(FINDEN(B2;$A$1));"";B2)
Das gewünschte Ergebnis, alle gefundenen Strings hintereinander, wäre dann
=C2&C3&C4&C5
:)
Anzeige
AW: Nach mehreren strings in einem string suchen
05.04.2017 14:18:09
Manfred
Das habe ich derzeit, ist mir aber zu umständlich und unelegant :-)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Strings in Excel durchsuchen: So findest Du mehrere Suchtexte


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Suchliste: Leg eine Liste mit den Suchbegriffen in einem neuen Blatt an. Zum Beispiel in Tabelle2 von A1 bis A6.
  2. Formel zur Suche: Verwende die folgende Matrixformel in der Zelle, die den Text durchsuchen soll:
    =INDEX(Tabelle2!$A$1:$A$6;MIN(WENN(ISTZAHL(FINDEN(Tabelle2!$A$1:$A$6;A1));ZEILE(Tabelle2!$A$1:$A$6))))

    Stelle sicher, dass Du die Eingabe mit STRG+SHIFT+ENTER abschließt, um die Formel korrekt zu erstellen.

  3. Bereich anpassen: Stelle sicher, dass die Bereiche in der Formel zu Deinen Daten passen.
  4. Ergebnis prüfen: Die Formel gibt den ersten gefundenen Suchtext aus. Wenn kein Treffer erfolgt, wird der Hinweis "#kein Treffer" angezeigt.

Häufige Fehler und Lösungen

  • Problem: Formel gibt nicht den erwarteten Text aus.

    • Lösung: Überprüfe die Indizes in der Formel und stelle sicher, dass die Suchtexte im richtigen Bereich liegen.
  • Problem: Kein Treffer angezeigt.

    • Lösung: Stelle sicher, dass die Suchbegriffe richtig geschrieben sind und dass der Text, in dem gesucht wird, keine zusätzlichen Leerzeichen enthält.
  • Problem: Falsche Ausgaben.

    • Lösung: Achte darauf, dass die Kopfzeilen in Deinen Daten nicht in die Berechnung einfließen. Entferne diese gegebenenfalls.

Alternative Methoden

  1. VBA-Makro verwenden: Du kannst ein VBA-Skript erstellen, um nach mehreren Strings in einem Text zu suchen. Das Skript könnte so aussehen:

    Function SucheStrings(rng As Range, SuchStrings As Range) As String
       Dim cell As Range
       Dim result As String
       For Each cell In SuchStrings
           If InStr(1, rng.Value, cell.Value, vbTextCompare) > 0 Then
               result = result & cell.Value & ", "
           End If
       Next cell
       If Len(result) > 0 Then
           SucheStrings = Left(result, Len(result) - 2) ' Entfernt das letzte Komma
       Else
           SucheStrings = "Kein Treffer"
       End If
    End Function

    Dieses Skript sucht innerhalb des angegebenen Bereichs nach Strings und gibt alle gefundenen zurück.

  2. Python verwenden: Mit Python und der Pandas-Bibliothek kannst Du ebenfalls Strings durchsuchen. Hier ein einfaches Beispiel:

    import pandas as pd
    
    df = pd.DataFrame({'Text': ['WEG Offenburger Str. 1-5', 'REWE Einkauf', 'ALDI Angebot']})
    suchbegriffe = ['ALDI', 'REWE', 'Offenburger']
    
    def finde_strings(text, suchbegriffe):
       return [s for s in suchbegriffe if s in text]
    
    df['Gefundene'] = df['Text'].apply(lambda x: finde_strings(x, suchbegriffe))

Praktische Beispiele

  • Beispiel 1: Verwende die Formel aus der Schritt-für-Schritt-Anleitung, um in einer Liste von Buchungstexten zu suchen.
  • Beispiel 2: Wenn Du eine Liste von Suchbegriffen in Tabelle2 hast, suche in einer Zelle nach dem ersten Treffer. Die Formel gibt den entsprechenden Suchtext zurück.

Tipps für Profis

  • Array-Formeln sind besonders mächtig, wenn es darum geht, mehrere Suchtexte in einem einzigen Durchgang zu verarbeiten. Nutze dies, um Deine Excel-Dateien effizienter zu gestalten.
  • Verwende benannte Bereiche für Deine Suchtexte. So kannst Du die Formeln leichter lesen und pflegen.
  • Nutze die Funktion TEXTVERKETTEN, wenn Du alle gefundenen Strings in einer Zelle zusammenfassen möchtest (ab Excel 2016).

FAQ: Häufige Fragen

1. Wie kann ich mehrere Strings effizient in Excel suchen?
Nutze die Matrixformel mit INDEX und MIN, um mehrere Suchtexte gleichzeitig zu prüfen.

2. Funktioniert das auch in älteren Excel-Versionen?
Die oben genannten Methoden funktionieren in Excel 2010 und später. Für ältere Versionen könnte VBA eine bessere Lösung bieten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige