PR

【ExcelVBA】最終行の取得・最終列の取得

エクセルVBA-最終行と最終列を取得する方法-アイキャッチ 行・列の操作

マクロを作成するときによく使う「最終行」と「最終列」を取得する方法について説明します。

スポンサーリンク

エクセルシートの最終行を取得する方法

エクセルシートに表などのデータがあり、一番下の行が何行目かを調べる方法について説明します。

最終行を調べる方法は色々ありますが、一番よく使われる方法は↓のように書きます。

例)1列目の一番下の行から上に向かって調べて最終行を取得する
Cells(Rows.Count, 1).End(xlUp).Row

「Rows.Count」はエクセルシートの限界の1,048,576行を意味します。
最終行を求めるときはシートの一番下(シートの限界の行)から上に向かって(xlUp)調べて、値があるところを最終行として取得します。

下のサンプルデータではA列に日付が書いてあり、表の1番下の行は11行目です。
途中の6行目には空白の行があります。

ExcelVBA-最終行の取得-最終行から上に向かって調べる

サンプルマクロで実行している内容
① 最終行を格納するための変数を用意
② 1列目の最終行を取得して変数にセット(一番下の行から上に向かって調べる
③ メッセージボックスで最終行を表示する

'シートの一番下から上に向かって調べる

    '最終行を格納するための変数を用意…⓵
    Dim EndRow As Long
    
    '1列目の最終行を取得して変数にセット…⓶
    EndRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    'メッセージボックスで最終行を表示する…⓷
    MsgBox ("最終行: " & EndRow)

マクロを実行すると最終行:11行目とメッセージが表示されます。

ExcelVBA-最終行の取得-最終行から上に向かって調べる-結果

上の調べ方が最もよく使う方法ですが、下から調べずに1行目から調べる方法も可能です。
ただ、1行目から下に向かって調べる方法の場合は途中に空白行がある場合そこまでの行数になってしまいます。

1列目の1行目から下に向かって調べて最終行を取得する
Cells(1, 1).End(xlDown).Row

下のサンプルデータの場合は表の最終行は11行目ですが、6行目に空白の行があるので1行目からデータが連続しているのは5行目までです。

ExcelVBA-最終行の取得-1行目から下に向かって調べる

サンプルマクロで実行している内容
① 最終行を格納するための変数を用意
② 1列目の最終行を取得して変数にセット(1行目から下に向かって調べる
③ メッセージボックスで最終行を表示する

'1行目から下に向かって調べる

    '最終行を格納するための変数を用意
    Dim EndRow As Long
    
    '1列目の最終行を取得して変数にセット
    EndRow = Cells(1, 1).End(xlDown).Row
    
    'メッセージボックスで最終行を表示する
    MsgBox ("最終行: " & EndRow)

1行目から下に向かって調べた場合は空白行の手前の5行目が最終行と判断されてしまいます。

ExcelVBA-最終行の取得-1行目から下に向かって調べる-結果
スポンサーリンク

エクセルシートの最終列を取得する方法

次は最終列を取得する方法について説明します。

行の場合は下から調べるか、上から調べるかの方法でしたが、列の場合は左に向かって調べるか、右に向かって調べるかで調べ方が変わります。

最終列を取得する方法として最も適しているのはシートの右端(シートの限界の列)から左に向かって調べる方法です。

1行目の一番右端の列から左に向かって調べて最終列を取得する
Cells(1, Columns.Count).End(xlToLeft).Column

Columns.Count」はエクセルシートの限界の16,384列を意味します。

下のシートの例では1行目のA列~H列までが表のようになっていますがD列は空白になっています。
シートの右端の列から左に向かって調べた場合は最終列は8列目のH列となります。

ExcelVBA-最終列の取得-最終列から左に向かって調べる

サンプルマクロで実行している内容
① 最終列を格納するための変数を用意
② 1行目の最終列を取得して変数にセット(右端の列から左に向かって調べる
③ メッセージボックスで最終列を表示する

'右端の列から左に向かって調べる方法

    '最終列を格納するための変数を用意
    Dim EndColumn As Long…⓵
    
  '1行目の最終列を取得して変数にセット(右端の列から左に向かって調べる)
    EndColumn = Cells(1, Columns.Count).End(xlToLeft).Column
    
  'メッセージボックスで最終列を表示する
    MsgBox ("最終列: " & EndColumn)

今度は1列目から右に向かって調べて最終列を求める方法です。

1行目の一列目から右に向かって調べて最終列を取得する
Cells(1, 1).End(xlToRight).Column

1行目の1列目(A列)から右に向かって調べてデータが連続している最後の列はC列までのため、この場合の最終列は3列目(C列)となります。

ExcelVBA-最終列の取得-1列目から右に向かって調べる

サンプルマクロで実行している内容
① 最終列を格納するための変数を用意
② 1行目の最終列を取得して変数にセット(1列目から右に向かって調べる
③ メッセージボックスで最終列を表示する

    '最終列を格納するための変数を用意
    Dim EndColumn As Long
    
  '1行目の最終列を取得して変数にセット(1列目から右に向かって調べる)
    EndColumn = Cells(1, 1).End(xlToRight).Column
    
  'メッセージボックスで最終列を表示する
    MsgBox ("最終列: " & EndColumn)
スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

タイトルとURLをコピーしました