例えば、エクセル表から社員番号を検索して
その人の勤続年数を引っ張ってきたい場合
関数としてよく「Vlookup」が使用されます。
しかし、「Vlookup」は検索する値が必ず左端列になければなければ
ならないという決まりがありますから、この場合、社員番号が左端に
来ていないと使用できません。
そこででているのか、「Index」と「Match」を組み合わせた関数です。
INDEX(配列,行番号,列番号)の行番号”、列番号”の部分に
MATCH(検索値,範囲,型)を代入することで実現できます。
例えば、B列にある「12」を検索し、同行のA列にある値を取り出す場合
以下のように記述します。
A勤続年数,B社員番号,C有給数
---
1,4,5
2,8,10
3,12,15
4,16,20
=INDEX(A1:C4,MATCH(12,B:B,0),A:A)
(=INDEX(表範囲,MATCH(検索値,検索列,検索,型),値を取り出したい列)
VBAを使えばもっと柔軟にでます。
詳しくは省きますが、以下のような感じでできると思います。
Dim WrkRange as variant
Dim i as long
WrkRange = Range("A1").userange
for i = 1 to Ubound(WrkRange)
if WrkRange(i,2) = 12 then
msgbox (WrkRange(i,1))
endif
next i
VBAについては次回以降詳しく書きたいと思います。