私は「en_US@」と「;」の間から製品情報を抽出しようとしています。たとえば、「en_US@Terminal Block;」が与えられた場合、Terminal Block が返されるようにしたいです。これを行うための私の方法は次のとおりです。
=MID(B2, FIND("en_US@",B2)+6, FIND(";", B2, FIND("@", B2)+1)-FIND("@",B2)-1)
どちらが正しい。
私の質問は、テキスト抽出を開始するために「en_US」または「??_??」のいずれかを検索するように、検索するコードのオプションとして「??_??@」を含めるコードを記述できるかどうかです。
答え1
これは動作しているようです:
=IF(SUMPRODUCT( -- ISNUMBER(SEARCH({"en_US@","~?~?_~?~?@"},A1)))>0,MID(A1, FIND("@",A1)+1, FIND(";", A1, FIND("@", A1)+1)-FIND("@",A1)-1),"NA")
魔法はSUMPRODUCT( -- ISNUMBER(SEARCH({...},cell)))>0ビットにあります。ここ
「?」を具体的に SEARCH() するには、検索ではデフォルトで「?」がワイルドカードとして扱われるため、それぞれをチルダで区切る必要があります。
オリジナルから変更された唯一の点は、IF() で開始して、文字シーケンスの 1 つが見つかるかどうかを確認し、次に "@" を見つけることです。