例えば、ExcelシートにOracleDBのSEGSを読み込んで使用する場合、
Excelで範囲が定まらないと、
Vlookup関数にしろ、Index関数にしろ使えない。
で、貼り付けて必ずある列を 例えばB列 とする。
最下行を求めるには
=MAX(
IF(
COUNTIF(B:B,"*"),MATCH("",B:B,-1)
),
IF(
COUNT(B:B),MATCH(MAX(B:B)+1,B:B,1)
)
)
これで最下行(つまりMAX行)が求まるので
Indirect関数等で使用して使う。
(アスタリスクはもちろん半角で)
具体的には
シート名:検索用データ
A1:=MAX(IF(COUNTIF(B:B,"*"),MATCH("",B:B,-1)),IF(COUNT(B:B),MATCH(MAX(B:B)+1,B:B,1)))
A2~Z2:列見出し
A3~A999:Key(CONCATENATE関数や&でつなげた検索用キー)
B3~Z999:貼付データ(999は最大行)
別シートの検索用キーで検索用データシートを探し、F列のデータを得る場合
=INDEX('検索用データ'!A3:INDIRECT("'検索用データ'!Z"&A1),
MATCH(Key,'検索用データ'!A3:INDIRECT("'検索用データ'!A"&A1),0),
6)
※定数6はKey列から数えて6番目(A,B,C,D,E,F)だから。