< 私家版QuickSort | 携帯コンテンツ開発情報 >

September 30, 2003

複数列のVLOOKUP

Excelで、別シートから1つの項目をキーにして、他の項目を参照したりするのに、VLOOKUP関数は便利だよね。

VLOOKUP(検索値,範囲,列番号,検索の型)

でも、たとえば、DB設計書を作る場合を考えてみよう。
DB設計って、1つの項目、たとえば在庫管理システムなら、品種のコードなんて項目、品種マスタ表にも、在庫表にもあって、同じデータ型、同じ桁数、同じデータ範囲だよね。
じゃあ、テーブルで必要な列の各属性をまとめたシートを1つ作って、各表の設計書は列名をキーにそのシートを参照しようって思ったとしよう。列名は項目一覧ってシートのB列。
とりあえずデータ型を参照する式をC2のセルに入力するとこんな感じとする。
=IF($B2="","",VLOOKUP($B2,'項目一覧'!$A$1:$E$100,2,FALSE))

で、次は桁数。セルはD2。
=IF($B2="","",VLOOKUP($B2,'項目一覧'!$A$1:$E$100,3,FALSE))

で、次はデータ範囲
=IF($B2="","",VLOOKUP($B2,'項目一覧'!$A$1:$E$100,4,FALSE))

みての通り、列番号以外は同じ式。でも、列番号が違うばっかりに、オートフィルで式を入力したりできなくって、コピーしたあと各列に合わせて列番号を修正する羽目に。間にやっぱり項目の日本名もいれなきゃってなったら、またやり直しだ。
そこで以下のように配列数式で上手にできないかなーと考えてみた。

なんてことはない、C2:E2を選択して、こんな感じの式を入力しCtrl + Shift + Enter。

=IF($B2="","",VLOOKUP($B2,'項目一覧'!$A$1:$E$100,COLUMN($C2:$E2)-1,FALSE))

なあんだ、もっと早く思いつけばよかったー。

トラックバック

このエントリーにトラックバック:
http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/55

コメント

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?