• ベストアンサー

Excel関数 複数シートをまたがって検索する方法

タイトルの通りなのですが 例えばSheet1とSheet2とSheet3のA列の どこかにある、検索値を Sheet4で検索する方法って ありますか? VLOOKUPで =IF(ISERROR(VLOOKUP(Sheet4!A1,Sheet1!A:A,1,FALSE)),VLOOKUP・・・と、 エラーの場合は、他のSheetを検索という方法なら わかったのですが・・・

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

  • ベストアンサー
noname#29107
noname#29107
回答No.2

#1です。 >この数式の訳(?)を教えていただけませんか? まず、この回答の場合、Sheet1からSheet3のA列には重複する値が入っていないことを前提にしています。重複する場合CHOOSE関数で実現するともうすこし複雑になります。 今回の回答の場合で構造を説明します。 =CHOOSE([どのシートに検索値があるかの値、1ならどのシートにもない、2ならSheet1・・],"見つかりません",Sheet1対象のVLOOKUP,,Sheet2対象のVLOOKUP,Sheet3対象のVLOOKUP) のようになっています。 COUNTIF(Sheet1!A:A,A2)+COUNTIF(Sheet2!A:A,A2)*2+ COUNTIF(Sheet3!A:A,A2)*3+1 がどのシートに検索値があるかを返す部分です。「*2」や「*3」することでどのシートに値があるかを特定しています。「+1}しているのは、どのシートでも値がなかった場合、0になりますが、CHOOSE関数はエラーになってしまいますので「+1}しています。また、VLOOKUP関数をカンマで続けられるのは、CHOOSE関数の引数になっているからです。 今回の回答、少々趣味に走りすぎた面があります。普通なら、IF関数の入れ子で処理します。 =IF(COUNTIF(Sheet1!A:A,A2)>0,VLOOKUP(A2,Sheet1!A:A,1,FALSE), IF(COUNTIF(Sheet2!A:A,A2)>0,VLOOKUP(A2,Sheet2!A:A,1,FALSE), IF(COUNTIF(Sheet3!A:A,A2)>0,VLOOKUP(A2,Sheet3!A:A,1,FALSE),"見つかりません"))) の方がよいでしょう。値が重複しても問題ないですし。

kurulin
質問者

お礼

COUNTIFやCHOOSEも、奥が深いですね~ すごく勉強になりました どうもありがとうございます!またよろしくお願いします 。

その他の回答 (1)

noname#29107
noname#29107
回答No.1

あんまり奇麗な解決方法ではないですが... sheet4のA2セルの値を検索する場合: =CHOOSE(COUNTIF(Sheet1!A:A,A2)+COUNTIF(Sheet2!A:A,A2)*2+ COUNTIF(Sheet3!A:A,A2)*3+1,"見つかりません", VLOOKUP(A2,Sheet1!A:A,1,FALSE), VLOOKUP(A2,Sheet2!A:A,1,FALSE),VLOOKUP(A2,Sheet3!A:A,1,FALSE)) こんな感じでどうでしょうか。

kurulin
質問者

お礼

ありがとうございます(^-^) エラーでやるよりもきれいです! ちなみに、CHOOSEや、COUNTIFや、VLOOKUPは それぞれ単品では使うんですが、 混ぜて使用する時の「*2」とか「*3」には どのような意味があるのでしょうか? また、どうしてVLOOKUPを「、」でつなげられるのですか? よろしければ、この数式の訳(?)を教えていただけませんか?お願いします。

関連するQ&A