Tips Excelシートの行範囲を求める

例えば、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)だから。