- ベストアンサー
エクセル関数でご教示下さい
エクセルの1セル(A列の各行)に入力されている文章を、B列C列・・・・と振り分ける為、 =LEFTや=MID関数を使って振り分けていますが、「出張」又は「来所」といった2つのどちらかの文字の次から10文字を取り出すような関数があればご教示ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
=MID(A1,MIN(FIND({"出張","来所"},A1&"出張来所"))+2,10)
その他の回答 (2)
- Tom-3
- ベストアンサー率32% (42/130)
「セル:A1」に「012来所1234567890123456789」と入力されているとして、 まず、「来所」が文字列の何番目に存在するかをチェックします。 「セル:B1」に=FIND("来所",A1,1)と入力すると「4」と表示されると思います。 FIND関数は指定された検索文字列が何文字目に存在するかを確認するための関数です。 次はMID関数でFINDで見つかった数値「4」を基準に10文字振り分ける事を考えます。 ここで注意が必要なのは「来所」の文字の後から10文字になるので 「セル:B1」への式の指定は =MID(A1,FIND("来所",A1,1)+2,10) ~~~ となります。 次に同じように「出張」の文字の後から10文字になるので =MID(A1,FIND("出張",A1,1)+2,10) という指定になります。 次に「出張」又は「来所」のどちらかという条件のもと「セル:B1」に名称を表示するため IF関数を利用します。 その際、「出張」又は「来所」のいずれも入っていない場合は空白とします。 最終的に「セル:B1」に設定される式は =IF(ISERROR(FIND("来所",A1,1))=FALSE,MID(A1,FIND("来所",A1,1)+2,10) ,IF(ISERROR(FIND("出張",A1,1))=FALSE,MID(A1,FIND("出張",A1,1)+2,10),"") ) とすれば、「出張」又は「来所」のいずれかが入っている場合は指定した文字の後の10文字 どちらにも該当しない場合は空白となります。 ちなみに ISERROR関数はFINDした結果指定された文字列が存在しなかった場合、「True」を返している事を 確認するために使用するものです。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 =IF(SUM(COUNTIF(A1,{"*出張*","*来所*"})),MID(A1,FIND("###",SUBSTITUTE(SUBSTITUTE(A1,"出張","###"),"来所","###"))+2,10),A1)
お礼
早速の回答、ありがとうございました。 勉強になりました。
お礼
回答、ありがとうございました。 早速、活用させていただきます。