EXCEL VBAで最終行を取得する方法

EXCEL-VBA-get-row
  • URLをコピーしました!

EXCELデータを処理する時に最終行のデータまで自動で処理したい。

自然と増えていくEXCELデータを処理するから、コードを書くときに固定数字で何行目まで処理するって書くのはダサい。

自動で最終行取得する方法ってどうすればいい?

本記事ではVBAで最終行を取得するコーディング方法を解説します。

この記事を読めばわかるようになること

  1. 最終行取得の方法
  2. EXCELデータの最終行を取得し繰り返し処理を行う方法
目次

VBAで最終行を取得する方法は

連続したデータのように見えますが、実は5行目が空白行となっています。

VBAで最終行を取得する方法の画像

最終行取得方法(その1)

一つ目は、Cells(1, 1).End(xlDown).Row で取得する方法です。


Sub sample_lastrow_1()

Dim lastrow As Long
 
  'A列を参照し最終行を取得
  lastrow = Cells(1, 1).End(xlDown).Row
  
  MsgBox lastrow

End Sub

実際にEXCELでA1のセルにカーソルをあてた状態で
Ctrl + ↓ を操作してみてください。

A4のセルに移動しましたね。
そうなんです。

この方法で書くと連続したデータで途中の空白行のデータを手前まで
自動で移動し、その値の行番号を取得することができるコーディングです。

では実際に、VBAを実行して、最終行を取得してみましょう。


はい、メッセージボックスで4が表示されましたね。

Cells(1, 1).End(xlDown).Row の実行結果

最終行取得方法(その2)

では途中に空白行が存在するデータであった場合でも
本当の最終行を取得したい場合はどうするのでしょうか?

その場合は、

Cells(Rows.Count, 1).End(xlUp).Row

を使用します。

Sub sample_lastrow_2()

Dim lastrow As Long
 
  'A列を参照し最終行を取得
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  
  MsgBox lastrow


End Sub

Cells(Rows.Count, 1).End(xlUp).Row の意味について

Rows.CountにはEXCELの表全体の最終行の値が格納されています。

端末のExcelがOffice2007以降のバージョンでしたら、

1,048,576行が最大行数の値です。

つまりA列の1,048,576行目から、

「Ctrl + ↑」を押して .End(xlUp) しカーソル移動したよ。

っていう意味なんです。

何となく理解できますよね。

では実際に、VBAを実行して、最終行を取得してみましょう。

Cells(Rows.Count, 1).End(xlUp).Row の実行結果

はい、メッセージボックスで10が表示されましたね。

ここがポイント

・確実に最終行を取得する場合は、
 Cells(Rows.Count, 1).End(xlUp).Row を使用する。
・途中の空白行まで処理する必要がある場合は
 Cells(Rows.Count, 1).End(xlUp).Row を使用する。

最終行取得のコーディング例(簡単)

では、繰り返し処理と最終行取得を織り交ぜながら、
Excelの表データから金額の合計額を算出するコーディングを
してみましょう。

Sub sample_lastrow_3()

Dim lastrow As Long
Dim gokei_kgk As Long
 
 
  'A列を参照し最終行を取得
  lastrow = Cells(Rows.Count, 1).End(xlUp).Row
  
  '最終行まで繰り返し、C列の合計金額を算出
  For cnt = 1 To lastrow
    gokei_kgk = Cells(cnt, 3) + gokei_kgk
  Next cnt

  '合計額を表示
  MsgBox gokei_kgk

End Sub

VBAを実行すると・・・

合計金額が表示されましたね。

最終行取得を取得するメリット

最終行取得を取得するメリットの画像

通常、エクセルデータは取り扱うデータにもよりますが

増減が発生することが多いです。

プログラムでデータを処理する際は、基本的に全件処理することが大半です。

毎回、毎回、マクロ実行する際に、対象データが何件あるかを調べて

プログラムを書き替えるなんてことはやりたくありませんよね。

つまりプログラムで自動で最終行を取得し、可変データに対して

処理ができるようにしたい。

そんなとき、最終行の取得をVBAで実装すれば、簡単に繰り返し処理と組み合わせて

業務ロジックを作成することが可能になります。

まとめ

まとめの画像

VBAで最終行取得する方法を解説しました。

最終行を取得してコーディングする際は、

まず取り扱う表データの属性を意識して、

常に連続するデータなのか、あいだに空欄の値があり得るデータなのかを意識して

最終行取得のコーディングを試してみてくださいね。

EXCEL-VBA-get-row

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次