【VBA】表の最終行・最終列を取得する方法

Excel・VBA

ワークシートに記載されている表などの最終行・最終列を取得する方法を紹介します。データ処理などで表の末端のセル情報が必要なときに役に立ちます。

表に抜けがない場合の検索方法

検索対象の行・列に抜けがない場合に使える検索方法です。

表に抜けがない場合

最終行・最終列の検索には、RangeオブジェクトのEndプロパティを使用します。

Rangeオブジェクト.End(方向

引数(方向)には、検索する方向を指定します。

名前 説明
xlDown -4121 下へ検索
xlToLeft -4159 左へ検索
xlToRight -4161 右へ検索
xlUp -4162 上へ検索

そして、検索した最終行の行番号を取得するには、

Rangeオブジェクト.End(方向).Row

と書きます。

また、最終列の列番号を取得するには

Rangeオブジェクト.End(方向).Column

と書きます。

サンプルコード

表の最終行の行番号を求めるコードです。前提として、表の各列のラベルの記載されている行番号は既知であるとします。

表の最終行を求める
Sub 最終行の行番号を取得する()

    Dim endgyo As Long
    
    endgyo = Cells(5, 2).End(xlDown).Row

End Sub

また、表の最終列(右端)の列番号を取得する場合はEndプロパティの検索方向をxlToRightとして、最後の.Rowを.Columnに変えれば取得可能です。

Sub 最終列の列番号を取得する()

    Dim endretsu As Long
    
    endretsu = Cells(5, 2).End(xlToRight).Column

End Sub

表に抜けがある場合の検索方法

今度は表に抜けがある場合です。

表に抜けがある場合

実際の表でラベル部分に抜けがあることはまずないと思いますが、抜けがあった場合を想定します。

先ほどのケースでは、表に抜けがないので表の任意の位置を起点として末端を検索していましたが今回のケースでは、表の外側から表に向かって検索します。

表に抜けがある場合とない場合のアプローチの違い

また検索の起点となる点は、Worksheetの最終行・列を指定します。最終行・列の番号はそれぞれ次の方法で取得します。

Worksheetの最終行を取得:Rows.Count
Worksheetの最終列を取得:Columns.Count

これを用いて表の外側から表に向かって検索をします。

表の最終行と最終列の番号は次の方法で取得可能です。

【表の最終行(下端)を検索する】
Cells(Rows.Count, 任意の列番号).End(xlUp).Row

【表の最終列(右端)を検索する】
Cells(任意の行番号, Columns.Count).End(xlToLeft).Row

なお参考までに表の先頭行(上端)・先頭列(左端)については、

【表の先頭行(上端)を検索する】
Cells(1, 任意の列番号).End(xlDown).Row

【表の最終列(左端)を検索する】
Cells(任意の行番号, 1).End(xlToRight).Row

となります。

サンプルコード

例;表に抜けがある場合の検索

上記の表のケースにおける最終行・列を求めるコードです。今回もラベルとなる行・列については既知とします。

Sub 表の最終行と最終列を求める()
    
    Dim endgyo As Long
    Dim endretsu As Long
    
    endcell = Cells(Rows.Count, 2).End(xlUp).Row
    endretsu = Cells(5, Columns.Count).End(xlToLeft).Column

End Sub

このコードでは最終行を求めるために、表の日付(2列目)を検索対象として使用しています。また、最終列を求めるには5行目を検索対象として使用しています。

コメント

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