小技集

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ



2023年9月19日【ID:0】

【ExcelVBA】表の最終行の行番号を取得する方法

※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。


VBAで何かを開発する際に、表の最終行の行番号を取得することが結構あります。
そんな最終行の取得方法には色んな方法があります。

こちらでは、4パターンをお伝えし、それぞれのメリット・デメリットをまとめています。

最終行の行番号を取得する方法

最終行の取得方法は、以下のlastRow1からlastRow4などの方法があります。
これ以外にも色んな方法がありますが、今回はこちらの4パターンについて触れていきます。
※こちらのファイルは配布しています。

では、順番にメリット・デメリットをまとめていきます。


lastRow1
lastRow1 = Cells(Rows.Count, "A").End(xlUp).Row

こちらは、A列のシートの最後のセル「A1048576※最後の行番号はバージョンによって異なる」から「Ctrl+↑(カーソルキー)」で移動した先のセルの行番号を取得するという方法です。
「Ctrl+↑」で、次に値の入力されているセルまで移動することができます。

メリットは、必ず値の入力されている項目がある場合は、その項目の列を基準に正しい最終行の行番号を取得することができます。
表の間に空白行があったとしても、最終行を取得することができます。

デメリットは、必ず値の入力されている項目がない場合は、正しい最終行の行番号を取得することができないことです。
例えば、以下の表の場合、A列を基準に最終行の行番号を取得すると「11」になってしまいます。


lastRow2
lastRow2 = Range("A1").End(xlDown).Row

こちらは、A列の先頭「A1」から「Ctrl+↓(カーソルキー)」で移動した先のセルの行番号を取得するという方法です。

メリットは、単純にコードを短く書くことができます。

デメリットは、データが0件の場合や、空白行がある場合に正しい行番号を取得することができません。
0件の場合は、「Ctrl+↓」ですと、次に値が入力されているセルが見つからないため、シートの最後の行番号が取得されてしまいます。


lastRow3
lastRow3 = Range("A1").SpecialCells(xlLastCell).Row

こちらは、シート上で使用されたことがあるセル範囲の最後の行番号を取得するという方法です。
使用されたことがあるセル範囲は、セルA1を基準に「Ctrl + Shift + End」で選択される範囲になります。

メリットは、必ず値の入力されている項目がなくても、最終行の行番号を取得することができます。

デメリットは、"使用されたことがあるセル範囲"のため、データが削除された場合に、正しい最終行の行番号を取得することができません。


lastRow4
lastRow4 = Range("A1").CurrentRegion.Rows.Count

こちらは、現時点で使用されているセル範囲から行数を取得するという方法です。
表の中を選択し、「Ctrl+A」で選択される範囲の行数を取得しています。

メリットは、lastRow3と同様に、必ず値の入力されている項目がなくても、最終行の行番号を取得することができます。

デメリットは、空白行がある場合には、正しい最終行の行番号を取得することができません。


まとめ

それぞれにメリットとデメリットがあるため、それらを理解した上で、活用するのが良いです。
個人的には、lastRow1とlastRow4の方法がオススメになります。

▼サンプルファイル▼


パソコンで開く場合は、記事の最後に「リンクコピー」があるためご活用ください。

※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。


メンバー募集 メンバー募集





リンクの共有はこちらから行えます。

  リンクコピー    X Facebook はてなブックマーク Pocket
トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ


- 人気の記事 -



- メンバー限定 [一覧] -



サイト累計閲覧数

7420379

有料動画講座
(買い切り)

Excel完全制覇


ちょっとした機能 便利ツール
【小技集】

【Excel】片方にしか存在しない値を見つける

【Excel】区切られた文字列から文字を抽出

【ExcelVBA】ダブルクリックで塗りつぶしとリセットを繰り返す

【Excel】数式で画像を参照して抽出できる!?

【Excel】表の行列を入れ替えて表示する

【Excel】1つの数式でセル結合を解除

【Googleスプレッドシート】チェックボックスの自動表示

【Excel】簡易的な検索機能を数式のみで実現

【ExcelVBA】選択した値の関連データを自動で抽出

【Excel】日付と曜日を表示形式で改行して表示する

【Excel】XLOOKUPがVLOOKUPより便利な点(3選)

【Excel】登録データから未来を予測

【Excel】開発不要の登録フォーム

【Excel】数式を表の下まで一発でコピー

【Excel】IF関数のネスト問題を「IFS関数」で解決

【ExcelVBA】自作関数(ユーザー定義関数)が自動更新しない

【Excel】同じ名前のファイルを同時に開く方法

【Excel】数式で年齢を求める方法【2選】

【Excel】特定の項目が特定の値の場合に行全体を色付け

【ExcelVBA】半角文字を自動で全角文字に変換

【Excel】図形の幅ギリギリまでテキストを表示

【Excel】実は便利な拡張子(xltx)とは

【Excel】条件付き書式で結合した見た目にする方法

【Excel】不要なセルを自動でグレーにする方法

【Excel】「選択範囲内で中央」の本当の使い道





一覧ページへ

トップ > 小技集 > 記事
小技集一覧へ
限定コンテンツ一覧へ