みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのfind関数で、複数の条件

エクセルで、住所に"北海道"が含まれていると、"北海道"と表示し、
"青森県"や"岩手県"などが含まれていると、"東北"と表示したいです。

以下の関数を作ったのですが、北海道のときは想定どおり"北海道"と表示されますが、
それ以外のときは#VALUE!になってしまいます。
どこが悪いでしょうか?

=if(find("北海道",A1)>0,"北海道",if(find("青森県",A1)>0,"東北",if(find("岩手県",A1)>0,"東北",if(find("宮城県",A1)>0,"東北",if(find("秋田県",A1)>0,"東北",if(find("山形県",A1)>0,"東北",if(find("福島県",A1)>0,"東北","該当なし")))))))

投稿日時 - 2011-03-29 18:55:34

QNo.6629920

困ってます

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

添付図参照

B2: =IF(ISERROR(VLOOKUP(LEFT(A2,3),D$1:E$48,2,FALSE)),VLOOKUP(LEFT(A2,4),D$1:E$48,2,FALSE),VLOOKUP(LEFT(A2,3),D$1:E$48,2,FALSE))

投稿日時 - 2011-03-29 20:00:47

お礼

回答ありがとうございます。

自分から関数で質問しておいてなんですが、この方法でいきたいと思います。
関数だとあとで修正するときにカッコの場所で頭がパニックになりそうですし、VBAで組むと使いまわしが不便ですし、VLOOKUPが一番手軽で、修正も簡単でよいと思います。
ありがとうございました。

投稿日時 - 2011-04-01 19:09:11

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

あまりIFIFせずに,こんな風に束ねることも出来ます。
=IF(ISNUMBER(FIND("北海道",A1)),"北海道",IF(OR(ISNUMBER(FIND({"青森県","秋田県","岩手県","宮城県","山形県","福島県"},A1))),"東北",""))

式の中に一組だけふつーと違うカッコが紛れているので,間違えないように注意して式を作成します。

投稿日時 - 2011-03-29 21:28:41

お礼

回答ありがとうございます。
{ }の使い方は知らなかったです。勉強なります。ありがとうございました。

投稿日時 - 2011-04-01 19:10:58

ANo.4

No.2です!
前回の投稿は無視してください。
大きな勘違いをしていました。
もう一度画像をアップさせてもらいます。

B1セルに
=IF(COUNTIF(A1,"北海道*"),"北海道",IF(COUNTIF($D$1:$D$6,LEFT(A1,3)),"東北",""))
という数式を入れオートフィルで下へコピーしています。

何度もごめんなさいね。m(__)m

投稿日時 - 2011-03-29 19:46:38

お礼

重ね重ね、ありがとうございました。

投稿日時 - 2011-04-01 19:04:01

ANo.3

 FIND関数と組合せて判定を行う場合には、ISERROR関数よりもISNUMBER関数の方が使い勝手が良いと思います。

=if(ISNUMBER(find("北海道",A1)),"北海道",if(ISNUMBER(find("青森県",A1)),"東北",if(ISNUMBER(find("岩手県",A1)),"東北",if(ISNUMBER(find("宮城県",A1)),"東北",if(ISNUMBER(find("秋田県",A1)),"東北",if(ISNUMBER(find("山形県",A1)),"東北",if(ISNUMBER(find("福島県",A1)),"東北","該当なし")))))))

 但し、質問者様が使われているExcelのバージョンが、Excel2007よりも前のバージョンである場合には、関数の中に関数を組み込む事(ネストと言います)は、7重までしか出来ません。
 ですから、もし、お使いのExcelがExcel2007よりも前のバージョンである場合には、別のやり方が必要になります。

投稿日時 - 2011-03-29 19:44:58

お礼

回答ありがとうございます。
ご指摘のとおり、バージョンは2002ですので、ネストは7回までです。
47都道府県をやりたいので、セルを7つに分けてやるつもりです。

投稿日時 - 2011-04-01 19:02:39

ANo.2

こんばんは!
ご希望の方法とはかけ離れてしまいますが、他の方法の一例です。

住所は必ず都道府県から始まっているとします。
↓の画像のように道県の表を作成しておきます。
(すべてを3文字としています)

B1セルに
=IF(COUNTIF($D$1:$D$7,LEFT(A1,3)),LEFT(A1,3),"")
という数式を入れオートフィルで下へコピーすると画像のような感じになります。

参考にならなかったらごめんなさいね。m(__)m

投稿日時 - 2011-03-29 19:35:43

お礼

回答ありがとうございます。
参考になります。

投稿日時 - 2011-04-01 19:03:18

ANo.1

FIND("北海道",A1)
で北海道が見つからない場合、結果は#VALUE!になります
ですので

A1が北海道以外であった場合

=IF(FIND("北海道",A1)>0,"北海道","以下略")

の論理式の結果はFALSEではなくなります。

解決策として

=IF(ISERROR(FIND("北海道",A1))=FALSE,"北海道",IF(ISERROR(FIND("青森県",A1))*ISERROR(FIND("岩手県",A1))*ISERROR(FIND("宮城県",A1))*ISERROR(FIND("秋田県",A1))*ISERROR(FIND("山形県",A1))*ISERROR(FIND("福島県",A1)),"該当なし","東北"))

といった方法があります

投稿日時 - 2011-03-29 19:25:00

お礼

回答ありがとうございます。

投稿日時 - 2011-04-01 18:59:48

あなたにオススメの質問