Ich versuche, Produktinformationen zwischen „en_US@“ und „;“ zu extrahieren. Wenn ich also beispielsweise „en_US@Terminal Block;“ erhalten würde, würde ich Terminal Block zurückerhalten wollen. Meine Methode hierfür war:
=MID(B2, FIND("en_US@",B2)+6, FIND(";", B2, FIND("@", B2)+1)-FIND("@",B2)-1)
welches ist richtig.
Meine Frage lautet: Kann ich Code schreiben, der „??_??@“ als Option für den zu suchenden Code enthält, sodass ich entweder nach „en_US“ oder „??_??“ suchen würde, um die Textextraktion zu starten?
Antwort1
Das scheint zu funktionieren:
=IF(SUMPRODUCT( -- ISNUMBER(SEARCH({"en_US@","~?~?_~?~?@"},A1)))>0,MID(A1, FIND("@",A1)+1, FIND(";", A1, FIND("@", A1)+1)-FIND("@",A1)-1),"NA")
Die Magie liegt im SUMPRODUCT( -- ISNUMBER(SEARCH({...},cell)))>0 Bit, das hier besprochen wird.Hier
Um mit SEARCH() gezielt nach einem „?“ zu suchen, müssen Sie jedes mit einer Tilde abgrenzen, da die Suche „?“ standardmäßig als Platzhalter behandelt.
Die einzige andere Änderung gegenüber Ihrem Original besteht darin, dass Sie zunächst mit einem IF() beginnen, um zu prüfen, ob eine der Zeichenfolgen gefunden wird, und dann das „@“ finden.