• ベストアンサー

エクセル関数でご教示下さい

エクセルの1セル(A列の各行)に入力されている文章を、B列C列・・・・と振り分ける為、 =LEFTや=MID関数を使って振り分けていますが、「出張」又は「来所」といった2つのどちらかの文字の次から10文字を取り出すような関数があればご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#204879
noname#204879
回答No.3

=MID(A1,MIN(FIND({"出張","来所"},A1&"出張来所"))+2,10)

hijtxa
質問者

お礼

回答、ありがとうございました。 早速、活用させていただきます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Tom-3
  • ベストアンサー率32% (42/130)
回答No.2

「セル: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)
回答No.1

一例です。 =IF(SUM(COUNTIF(A1,{"*出張*","*来所*"})),MID(A1,FIND("###",SUBSTITUTE(SUBSTITUTE(A1,"出張","###"),"来所","###"))+2,10),A1)

hijtxa
質問者

お礼

早速の回答、ありがとうございました。 勉強になりました。

すると、全ての回答が全文表示されます。

専門家に質問してみよう