- ベストアンサー
エクセル2000で2列にわたるVLOOKUPをしたいとき
名前■■電話番号■■■■顧客コード 田中■00-0000-0000■■■00-3256 山本■03-3225-5898■■■00-3698 こんな感じの表があります。約13000行(表1) で一方で電話番号と顧客コードが同一の列にはいっている表があります。 03-9858-5656■東京 03-6598-8574■大阪 02-6985■■■■名古屋 02-3698■■■■仙台 (表2) これは約2000行あります。 で表1において、最初に電話番号を表2からVLOOKUPで表引き、 もしその値がなければ顧客コードで再度表2からVLOOKUPで表引 きしたいと思っています。 この際にはどんな関数をかけばよいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ISERRORを使用してみてはどうでしょう? 記述はこうなると思います。 if(iserror(電話で検索のvlookup())= true,顧客コードのvlookup(),電話検索のvlookup()) ISERRORは括弧の中の式が正常かどうかを判断してくれます。 (エラーの時にTRUEを返してくれます) 私がVLOOKUPを使用するときによく使うのですが、 VLOOKUPをして該当データがなければ,セルに#N/Aって表示されると思うのですが、これがいやなので IF(ISERROR(VLOOKUP(式))=TRUE,”該当なし”,VLOOKUP(式)) という風にしています。 こうしておけば#N/Aと表示されずに”該当なし”とセルに表示されます。 もう少し凝ったようにするのであれば顧客コードのVLOOKUPもISERRORで聞いてやって最終なにもなければ”該当なし”ってセルに表示させる事も可能です。 一度試してみて下さい。
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 IF文で条件分岐してやればいいと思います。 VLOOKUP関数で見つからない場合はエラーを返すので、ISERROR関数で判定すればいいでしょう。 表1がA、B、C列にあり、表2がF、G列にあるとします。 表1に各データに対して、表2に見つかれば、表2のG列(東京など)の値をD列に返すとします。(見つからなければ"") D2(田中の行)に、 =IF(ISERROR(VLOOKUP(B2,$F$2:$G$3,2,FALSE)),IF(ISERROR(VLOOKUP(C2,$F$2:$G$3,2,FALSE)),"",VLOOKUP(C2,$F$2:$G$3,2,FALSE)),VLOOKUP(B2,$F$2:$G$3,2,FALSE)) とします。 ちなみに表2はF2:G3としたので、必要な範囲にして下さい。また、表2が増えると範囲を指定しなす必要があります。
- DaddyBear
- ベストアンサー率38% (7/18)
IF文とVLOOKUPの組み合わせで実現できると思います。 但し、見た目あんまりエレガントな式というわけには行きません。 VLOOKUPの4番目の引数(検索の型)にFALSEを指定してこんな感じの式を作ります。 =IF(NOT(ISNA(VLOOKUP(検索値,表1,列番号,FALSE))),VLOOKUP(検索値,表1,列番号,FALSE),VLOOKUP(検索値,表2,列番号,FALSE)) 表1で検索した結果が#NAの場合、表2の検索結果を表示します。 ワークシート等をうまく利用すればもう少しエレガントな記述も可能と思います。 参考になれば幸いです。