it-swarm.com.de

Excel: Suchen Sie nach einer Liste von Zeichenfolgen in einer bestimmten Zeichenfolge mithilfe von Arrayformeln?

Ich möchte in einer Zelle nach einer Liste von Wörtern suchen ... Ich dachte, dies würde als Matrixformel funktionieren:

{=FIND(<list of words I want to search for>,<cell I want to search>)}

Es findet jedoch nur eine Übereinstimmung, wenn ein Wort in der Zelle, die ich suche, in der ersten Zeile der Wortliste steht, nach der ich suche. Gibt es eine Möglichkeit, eine Formel zu schreiben, die die gesamte Liste durchläuft? Und ich würde es vorziehen, wenn es nicht einfach WAHR/FALSCH zurückgegeben würde. Ich kann Zellen nach einer Liste von Wörtern durchsuchen und WAHR/FALSCH zurückgeben, je nachdem, ob ein Wort in der Liste in der Zelle vorhanden ist oder nicht. Ich möchte eigentlich wissen, welches Wort gefunden wurde oder welche Position es hat.

Dies gibt das passende Wort oder einen Fehler zurück, wenn keine Übereinstimmung gefunden wird. Für dieses Beispiel habe ich Folgendes verwendet.

Wortliste zum Suchen nach: G1:G7
Zu durchsuchende Zelle: A1

=INDEX(G1:G7,MAX(IF(ISERROR(FIND(G1:G7,A1)),-1,1)*(ROW(G1:G7)-ROW(G1)+1)))

Geben Sie als Matrixformel ein, indem Sie drücken Ctrl+Shift+Enter.

Bei dieser Formel wird zuerst die Liste der Wörter durchsucht, um Übereinstimmungen zu finden. Anschließend wird die Position des Wortes in der Liste als positiver Wert aufgezeichnet, wenn es gefunden wird, oder als negativer Wert, wenn es nicht gefunden wird. Der größte Wert aus diesem Array ist die Position des gefundenen Wortes in der Liste. Wird kein Word gefunden, wird ein negativer Wert an die Funktion INDEX() übergeben, wodurch ein Fehler ausgelöst wird.

Um die Zeilennummer eines übereinstimmenden Wortes zurückzugeben, können Sie Folgendes verwenden:

=MAX(IF(ISERROR(FIND(G1:G7,A1)),-1,1)*ROW(G1:G7))

Dies muss ebenfalls durch Drücken von als Matrixformel eingegeben werden Ctrl+Shift+Enter. Es wird -1 zurückgegeben, wenn keine Übereinstimmung gefunden wird.

27
Excellll

Das Hinzufügen dieser Antwort für Leute wie mich, für die eine WAHR/FALSCHE Antwort absolut akzeptabel ist

OR(IF(ISNUMBER(SEARCH($G$1:$G$7,A1)),TRUE,FALSE))

oder Groß- und Kleinschreibung

OR(IF(ISNUMBER(FIND($G$1:$G$7,A1)),TRUE,FALSE))

Wo der Bereich für die Suchbegriffe G1:G7 ist

Denken Sie daran, STRG + UMSCHALT + EINGABETASTE zu drücken

2
Some_Guy
  1. Richten Sie Ihre Wortliste mit einem Trennzeichen ein, das in den Wörtern niemals vorkommt. |
  2. tauschen Sie Argumente im Suchaufruf aus - wir möchten suchen, wenn der Zellenwert mit einem der Wörter in der Musterzeichenfolge übereinstimmt {=FIND("cell I want to search","list of words I want to search for")}
  3. wenn die Muster ähnlich sind, besteht die Gefahr, dass mehr Ergebnisse erzielt werden als gewünscht. Wir beschränken nur korrekte Ergebnisse durch das Hinzufügen von & "|" Die Zelle G3 könnte Folgendes enthalten: {=SUM(FIND($A$1:$A$100&"|";A3))} Dies stellt sicher, dass die Kalkulationstabelle Strings wie "cellvlaue |" vergleicht. wieder "pattern1 |", "pattern2 |" usw., die Konflikte wie muster1 = "neu hinzugefügt", muster2 = "hinzugefügt" aussortiert (die Summe aller Zellen, die mit "addiert" übereinstimmen, wäre zu hoch, einschließlich der Zielwerte für Zellen, die mit "neu hinzugefügt" übereinstimmen), was logisch wäre Error)
0
RRTrash