ExcelVBAでデータのある最終行、最終列を取得する備忘録です。
最終行を調べる(隙間なし)
下のようにデータが隙間なく入っている場合
A1を基準に最終行を出すには下のように記述します。
Dim LastRow As Long
LastRow = Cells(1, 1).End(xldown).Row
LastRowには7が入ります。
xlDownで指定セルの位置から下へ
データがある行の最終行が出せます。
最終列を調べる(隙間なし)
下のようにデータが隙間なく入っている場合
A1を基準に最終列を出すには下のように記述します。
Dim LastCol As Long
LastCol = Cells(1, 1).End(xlToRight).Column
LastColには3が入ります。
xlToRightで指定セルの位置から右へ
データがある列の最終列が出せます。
最終行を調べる(隙間あり)
下のように途中にデータが入っていないような状態でxlDownを使うと、
8行目に空白があるので、7行目が最終行と見なされてしまいます。
そこで下のように記述します。基準のセルはA1の例です。
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
LastRowには11が入ります。
空白があってもデータが入っている最終行が取得できます。
最終列を調べる(隙間あり)
下のようにデータが入っていないような状態xlToRightを使うと、
4列目に空白があるので、3列目が最終行と見なされてしまいます。
そこで下のように記述します。基準のセルはA1の例です。
Dim LastCol As Long
LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
LastColには5が入ります。
空白があってもデータが入っている最終列が取得できます。
まとめ(最終行、最終列)
最終行最終列を調べる記述をまとめてみました。
'★最終行
Cells(Rows.Count, 列).End(xDown).Row '---隙間なし
Cells(Rows.Count, 列).End(xlUp).Row '---隙間あり
'最終列
Cells(行, Columns.Count).End(xlToLeft).Column '---隙間なし
Cells(行, Columns.Count).End(xlToLeft).Column '---隙間あり