• ベストアンサー

エクセル2種類の特定の文字列を含む場合に指定文字を

エクセルで2種類の特定の文字列を含む場合に指定文字を返す 例  A列に北海道、関東、などを含む場合、B列に東日本     九州、四国などを含む場合、B列に西日本 指定条件を文字列ながら(北海道|関東)などのように複数指定したいのですが うまい方法が分かりません。 A列                B列        私は北海道に・・    =if(countif(A1,"*北海道*")=1,"東日本","西日本")   彼は九州に・・ 私は関東に・・ 私は四国に・・ 説明がわかりづらいかもしれませんが、ご教示いただけると助かります。 よろしくお願いします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えばB1セルに次の式を入力して下方にドラッグコピーします。 =IF((COUNTIF(A1,"*北海道*")+COUNTIF(A1,"*関東*"))>0,"東日本",IF((COUNTIF(A1,"*九州*")+COUNTIF(A1,"*四国*"))>0,"西日本","")) 他の地域でも東日本に表示するのでしたらCOUNTIF関数を使って足し合わせることでその合計が1以上であれば該当する文字列が含まれていることになりますね。東日本、西日本以外の地域を設けるのでしたらIF関数を増やしていくことになりますね。

basicisee
質問者

お礼

なるほど。 単純に足せばいいんですね。  言われてみるとその通りですが、考えつきませんでした。  試してみたら、うまくいきました。 どうもありがとうございました。

その他の回答 (3)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 ANo2です。  書き忘れておりましたが、A列のセルに例えば 「奈良在住の者ですが、東京国際フォーラムへ行く際に、中部国際空港経由で空路を使うのと、新大阪駅経由で新幹線を使うのでは、どちらが早く到着する事が出来るのでしょうか?」 という様に、東日本に該当する地名を示す単語、西日本に該当する地名を示す単語、どちらとも言えない地名を示す単語の全てが含まれている場合には、どの様に表示させたいと考えておられるのでしょうか?  因みに、ANo.2で挙げさせて頂いた方法では、上記の例の場合、 東日本,西日本,不明 と表示されます。

basicisee
質問者

お礼

確かに2つあることは想定していませんでした。 ほぼ、決まったフォーマットなので、2つあることはまずないとは思いますが、そういう可能性も考慮しないといけませんね。 色々と、ホント勉強になります。 貴重なご意見ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

こんなのは? 添付の図では、C1:J1に地域名、その下に表示したい文字列(東日本、西日本)を入力しておきます。 C3に↓を入れ、C3:J6にコピー =IF(ISNUMBER(FIND(C$1,$A3)),C$2,"") B3には↓ =C3&D3&E3&F3&G3&H3&I3&J3 これですと北海道と東北を北日本に変えたくなったりしてもすぐに対応できます。

basicisee
質問者

お礼

ありがとうございます。 これは他にも応用できそうです。 使えるアイデアありがとうございます。  色々と工夫出来る部分が、エクセルは面白いですね。 勉強になりました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 まず、適当な列を3列(ここでは仮にD列、E列、F列を使う事にします)使用して、        D列    E列    F列 1行目   東日本  西日本   不明 2行目   東日本  西日本   中部 3行目   東北    近畿    富山 4行目   関東    中国    石川 5行目   北海道   四国    福井 6行目   青森    九州 7行目   岩手    三重 8行目   宮城    滋賀 9行目   秋田    京都 10行目  山形    大阪 11行目  福島    兵庫 12行目  茨城    奈良 13行目  栃木    和歌山 14行目  群馬    鳥取 15行目  埼玉    島根 16行目  千葉    岡山 17行目  東京    広島 18行目  神奈川   山口 19行目  新潟    福島 20行目          香川 21行目          愛媛 22行目          高知 23行目          福岡 24行目          佐賀 25行目          長崎 26行目          熊本 27行目          大分 28行目          宮崎 29行目          鹿児島 30行目          沖縄 という具合に、どの分類になるのかのリストを作成しておきます。   次に、B1セルに次の数式を入力して下さい。 =IF(A1="","",REPLACE(IF(SUMPRODUCT(ISNUMBER(FIND($D$2:INDEX($D:$D,MATCH("*?",$D:$D,-1)),A1))*1),",東日本","")&IF(SUMPRODUCT(ISNUMBER(FIND($E$2:INDEX($E:$E,MATCH("*?",$E:$E,-1)),A1))*1),",西日本","")&IF(SUMPRODUCT(ISNUMBER(FIND($F$2:INDEX($F:$F,MATCH("*?",$F:$F,-1)),A1))*1),",不明",""),1,1,))  そして、B1セルをコピーして、B2セルに貼り付けて下さい。

basicisee
質問者

お礼

Vlook的なDB思考で作成する作戦ですね。  なるほどです。 このあたりの関数も勉強してみます。 ありがとうございました。

関連するQ&A

  • 【excel】複数のセルを対象に特定の文字列

    EXCELでセルB24:D31に一つでも文字列Aが入っている場合 あるセルに文字列2を表示させて偽の場合文字列3を表示させたいのですが =IF(B24:D31="","",IF(SUM(COUNTIF(B24:D31,{"*文字列A*","*文字列A*"})),"文字列2","文字列3")) この式ではエラーになってしまい、どうにも作業が進みません。どなたか教えていただけませんでしょうか?

  • エクセル 特定の文字列から範囲を指定

    エクセル 名前定義の範囲について質問です。 始まり・終わりの行・列を示す特定の文字列を設定し、 それを元に自動で範囲を変化させるようなことはできませんでしょうか。 例えば、 B1:列ここから D1:列ここまで A3:行ここから A6:行ここまで と書かれていた場合、 名前定義の範囲が自動で「B3:D6」となるような方法を探しています。 なお、 ・列を指定する文字列は必ず1行目に ・行を指定する文字列は必ずA列目に あるという想定です。 極力マクロを使用しない方法で、有効なものがございましたら ご指導のほどよろしくお願いします。

  • =IF(COUNTIFの文字列の複数条件

    A列にある契約先にある特定の文字列が含まれていた場合、B列に1か2の値を返したいです。 A列に契約先 (株)○○、(有)○○、(同)○○、(独)○○、(財)○○、○○大学、(同)○○ B列に契約先の種類を1と2で区別して、1か2の値を返したいです。 調べた結果、IF COUNTIFだと文字列の条件は一つに限るとの事で、文字列を複数にしたい場合どのような数式で値が返せますでしょうか。 下記のような数式ではだめでした。 =IF(COUNTIF(A1,"*(株)*",A1,"*(有)*",A1,"(同)"),"1","2") ちなみにCOUNTIFSというのもだめでした。 ほかにIF関数で文字列の複数条件で1か2を返せる数式がありましたら教えてください。 よろしくお願い致します。

  • EXCEL文字列検索

    こんにちは。教えてください。 リスト内で文字列の検索をしたいです。 =IF(COUNTIF(B2,"*あああ*")>0,"あああ",IF(COUNTIF(B2,"*いいい*">0),"いいい","")) ”あああ”はうまくいくのですが、”いいい”は空白になります。COUNTIF関数は二つ以上ネストできないのでしょうか?? もう困っています。どうかお力を貸していただけませんか?よろしくお願いします。

  • 今選抜、今日最後に大阪桐蔭も出場して、初戦について

    対戦相手の問題などもありますが、東日本(北海道、東北、関東、東京、北信越、東海)18戦11勝、西日本(近畿、中国、四国、九州)18戦7勝。さらに分けると、北日本(北海道、東北)7戦6勝、東日本(関東、東京)6戦2勝、中部日本(北信越、東海)5戦3勝、西日本(近畿、中国)10戦2勝、南日本(四国、九州)8戦5勝。この結果について、思うことはありますか?それは、どのようなことですか?

  • Excelの文字列関数について

    Excelの文字列関数について こんにちは。Excel2007を使用しています。 先日、こちらで質問させていただいた【QNo.5785641】の続きになるのですが・・・ セルの中にある特定の文字が含まれている場合は、ある文字の後ろの数値を抽出したいという質問で、 例えば、セルA1に『AA-11 $100.00』、A2に『BB $ 95.00』と入力されている場合、『AAという文字が含まれている場合はB1に$マークの後ろの数値を抽出、BBという文字が含まれている場合はC1に$マークの後ろの数値を抽出する』というものを関数を使用して作りたいというものに対し、 =IF(COUNTIF(A1,"*AA*")=1,RIGHT(A1,LEN(A1)-FIND("$",A1)),"") =IF(COUNTIF(A1,"*BB*")=1,RIGHT(A1,LEN(A1)-FIND("$",A1)),"") という回答をいただきましたが、さらに追加で質問です。 例えば、セルA1に『AA-11 $100.00 aabbcc』、A2に『BB $ 95.00 abc』というように、抽出したい数値の後ろにも文字が入力されている場合はどのようにしたらよいのでしょうか? 宜しくお願いします。

  • Excel、リンク元に指定文字列の存在を調べたい

    失礼いたします。 次のような関数式を用いて管理表を作りたいのです。 =IF(? ? ? ? ? ?,VLOOKUP(A3&B3,\○○○\△△△\[XXXXX]sheet1!$A$2:$G$20,4,false),"未入力")    ( ※ 「○○○」の前は\ではなく\\が正しいかもしれませんが、その点は大目に見ていただきたいです) 長い関数式ですので、念のため解説をしておきます。  ○ もし「? ? ? ? ? ?」だったら、「XXXXX」というエクセルブックの中の、「sheet1」というシートの中の、「A2~G20」の範囲の1列目(すなわち「A」の列)に、「A3&B3」と一致する文字列のセルから右に3列移動したセルを表示してください。  ○ もし「? ? ? ? ? ?」でなかったら、「未入力」と表示してください。 ところがここで問題なのが、「XXXXX」というエクセルブックの中の、「sheet1」というシートの中の、「A2~G20」の範囲の1列目(すなわち「A」の列)に、「A3&B3」と一致する文字列のセルが存在しない場合があるのです。そこで、  ○ もし「? ? ? ? ? ?」だったら、~~  ○ もし「? ? ? ? ? ?」でなかったら、~~ の「? ? ? ? ? ?」には、「XXXXX」というエクセルブックの中の、「sheet1」というシートの中の「A」の列に、「A3&B3」と一致する文字列のセルが存在する、という関数を入れたいのです。そうすれば、  1.(1つ以上)存在する → TRUEを返す → VLOOKUP関数により表示される  2.存在しない → FALSEを返す → 「未入力」と表示される というように管理できます。 ところが、私の現在の知識では、(1つ以上)存在すればTRUEを返す関数として、COUNTIF関数しか知らず、使いこなせません。 そこでCOUNTIF関数を使いました。次のような式です。  COUNTIF(\○○○\△△△\[XXXXX]sheet1!$A:$A,A3&"営業")>0 関数式のすべてを書けば、 =IFCOUNTIF(\○○○\△△△\[XXXXX]sheet1!$A:$A,A3&"営業")>0 ,VLOOKUP(A3&B3,\○○○\△△△\[XXXXX]sheet1!$A$2:$G$20,4,false),"未入力")    ( ※ VLOOKUP関数の中の「B3」には、「営業」と入力されることもあれば、ほかの文字列が入力されることもあります) すると、  ○ 通常 : 「#VALUE」が表示されてしまいます。  ○ 「XXXXX」というエクセルブックを開く : 実際に入力されているもの、もしくは「未入力」が表示されます。 そして、「#VALUE」が表示される理由を追いかけますと、COUNTIF関数の中の「A3」の箇所だけに下線が引かれ、この「A3」のためにエラーになっているのだとエクセルは教えてくれます。 以上を踏まえ、質問させていただきます。  1. COUNTIF関数は、リンクが混在する関数には適さないのでしょうか。  2. COUNTIF関数以外に、「A」列に「A3&"営業"」と一致する文字列が存在するかどうかを検索する関数があるとすれば、何でしょうか。  3. 現在、しかたなく「=VLOOKUP(~~~~)」だけにしているのですが、「未入力」と表示させたいところに「#N/A」が表示されます。これをほかの方法で、「#N/A」でなく「未入力」と表示させる方法があるとすれば、何でしょうか。 長文失礼いたしました。

  • 文字列を指定して重複チェックするには?

    どなたかおしえてください。 データベースで重複データのチェックを行う場合に、 下記の関数を使用しています。↓ =IF(COUNTIF($A$2:$A$10,A2)>1,"◎","") で、この抽出条件に、A2のセルの左から3文字までに合致すれば ◎と、条件指定したいのですが、 どのようにすればよいのでしょうか?

  • EXCELでCountif内に2つ以上の列を入れる場合

    0 A、B、C、D 1 a、1、h、2 2 b、0、i、1 3 c、1、j、2 4 d、0、k、1 5 e、1、l、0 6 f、0、m、2 7 g、1、n、0 上の用にaからnチームまでの得点表があります。 1点を得点したチーム数を計算するときに countif(B:B,"1">+countif(D:D,"1") を使うと実際にでるのですが、Countifを一つだけ使用して範囲の部分をB列からD列という形ではなくB列のみとD列のみの中から探すように指定するにはどうしたらいいのでしょうか? countif(B:D,"1")とやったのですが、こうするとB,D列だけでなくC列もカウントされてしまいます。今回はC列に数字がないので問題内のですが、チーム名で1の入るチームがあると計算がくるってしまうと思います。B列のみD列のみと指定する仕方を教えてください PS 一列にすべてを書けば問題ないのですが、列を分けることでスクロールせずに見ることができ見やすいと思い、複数列にしました。

  • COUNTIF関数での、文字列の指定について

    お世話になっております。 A1セルに、 「P」という文字が含まれる文字列を入力した場合に、 C1セルに、 「庶務業務」と自動で入力されるようにしたいと思っています。 (例) 書類P作成 ⇒ 庶務業務 ここで、COUNTIF関数を使ってやろうと思ったのですが、 「P」だけの入力には反応するのですが、 「書類P作成」だと反応してくれません。 この場合、どうしたらよいでしょうか…? (入力した計算式) =IF(COUNTIF(A1,"P")=1,"庶務業務","") アドバイス頂けると助かります、よろしくお願い致します。

専門家に質問してみよう