• ベストアンサー

VLOOKUP関数でシートをまたいで検索

趣味で集めたレコード、CDが3000枚を超えてしまいました。自分なりの整理番号をつけて整理してます。 VLOOKUP関数を使い整理番号を入力すると、その曲の 情報が得られるようにしたいと思いますが、ジャンルごとにシートを分けて整理したものからシートをまたいでの式が分かりません。 Sheet1が「J-POP」 sheet2が「ROCK」・・・15ジャンル(今後増える予定あり) sheet1に無ければsheet2からというふうにしたいのですが・・・ 3-D参照の壁は越えられないのでしょうか? 発想の転換の回答も大歓迎ですができればVLOOKUP関数を使いたいです (インデックスカードに埋め込みたいので単純に横一列の抽出だとだめなんです)

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

  • ベストアンサー
  • sekijitsu
  • ベストアンサー率33% (19/57)
回答No.1

Sheet1の結果、Sheet2の結果…というようにそれぞれシート数分、vlookup完全一致(FALSE型)で検索します。つまり15行分設けるということです。これらを仮結果としましょう。 すると、当然一つを除いて、残りはエラーとなりますので、 =IF(ISERROR(検索結果)=TRUE,"",検索結果) というような式で、エラーを排除します。 すると、15行のうち1行だけレコードが表示されている状態が想像できます。例えば6行目(Sheet6)がヒットしたとします。ではどうやって最終結果の行に6行目を反映させるかですね。仮結果はおそらくID、名前、アーティスト、、、という感じでしょう。ここで一番最初がIDというのがポイントです。これを使います。 本結果には、 =VLOOKUP(SUM(ID列の合計),仮結果範囲,列数,FALSE) と入れます。 ID列はヒットしない場合空欄になるようセットしましたよね?よって「ID列の合計=検索するID」になる筈です。そのIDを検索キーにして、仮結果の範囲からVLOOKUPで抽出するという訳です。 やってみると分かると思いますが、説明の割には意外とシンプルになると思います。仮結果の部分が邪魔であれば隠してしまえば良いでしょう。お試しあれ~

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

下記が出来るようなので、応用を考えてみてはどうですか。 Sheet1の A1に曲名(本例では整理番号) B1にジャンル番号、1,2、・・・ 曲名と歌手の入ったシートのSheet名を必ずSheet2、Sheet3、・・のようにする。(当初のシート名を変えない) (例データ) Sheet2 A列   B列 f x b y c z Sheet3 A列  B列 d u f v g z a s (関数式) Sheet1のC1に =VLOOKUP(A1,INDIRECT("Sheet"&B1&"!A1:B5"),2,FALSE) といれる。 (結果) A1にa,B1に3といれると C3はsになる。 (課題) さてB1の3をいれることだが、コンボボックスで 2-Jpop 3-Rock 4-Clasic ・・・ を設けて、選択し、B1に3がセットされるようにする (1は検索用シートに使ったため、リストになし。)

yanyanyanyan
質問者

お礼

「sekijitsu」さん 「imogasi」さんありがとうございました。 いろいろなやり方があるんですね。早速試してみます。 しかし「補助線」的なものを考える柔軟な頭脳には 脱帽です

関連するQ&A