Excel Vba で表の最終行する処理を知りたい!
このページでは Excel の表の最終行・最終列番号を取得する処理について
Excel Vba の関数(プロシージャ)として簡単にまとめましたので記述します。
この処理はかなり簡単な関数(プロシージャ)としてまとめてます。
- セル番号を指定(たとえば B2 という形式)
- 最終行・列を取得(B列の最終行・列をゲット!)
こんな感じですごく簡単な処理になっています。
またこの処理はコピーすればすぐに実装できるようにしています。
ですので、よければ必要な方はぜひコピペして使ってください。
- 表の最終行番号を取得する処理について
- 表の最終列番号を取得する処理について
Excel の表の最終行番号を取得する処理について
Excel の表の最終行番号を取得する方法は2通りあります。
- セルの元々の位置から空白セルの位置まで下って移動
- セルの一番下から空白セルの位置まで上って移動
「は?どういうこと??」と思われた方もいるかもしれません。
これがどういうことなのかわかりやすく説明します。
セルの元々の位置から空白セルの位置まで下って移動
まずは最終行取得のために「セルの元々の位置から空白セルの位置まで下って移動」する方法についてです。
まずはこんな感じの1~5まで含まれる1列の表があるとします。
ここの一番上のセル番号(B2)を選択します。
そしてキーボードの「↓」キーを入力すれば表の一番下のセルに移動できます。
いわばこの処理を Excel VBAで実現すればOKっていうことです。
実際の Excel Vba での最終行のセル番号を取得する処理は下記になります。
1 2 3 4 5 6 7 8 9 10 11 |
Sub test() Debug.Print getLastRow("B2") End Sub Function getLastRow(nowCell As String) getLastRow = Range(nowCell).End(xlDown).row End Function |
上記は B2セル(表の一番上)から End(xlDown) と下っていくこと処理です。
今回はこの処理を getLastRow プロシージャとしてまとめました。
この関数(プロシージャ)の引数と戻り値は下記になります。
項目名 | 値 | 説明 |
プロシージャ名 | getLastRow | 最終行番号取得 |
戻り値 | 指定したシート名の列の最終行番号 | - |
第1引数 | nowCell | セル番号(A1、B2)等 |
セルの一番下から空白セルの位置まで上って移動
次に「セルの一番下から空白セルの位置まで上って移動」する方法についてです。
先程と同じようにこんな感じの1~5まで含まれる1列の表があるとします。
これと同じ列の一番下のセルを選択します。
そしてキーボードの「↑」キーを入力すれば表の一番下のセルに移動できます。
この処理を Excel VBAで実現すればOKっていうことです。
実際の Excel Vba での最終行のセル番号を取得する処理は下記になります。
1 2 3 4 5 6 7 8 9 10 11 |
Sub test() Debug.Print getLastRow2("B2") End Sub Function getLastRow2(row As String) getMaxRow = Cells(Rows.Count, Range(nowCell).Column).End(xlUp).row End Function |
先程よりは少しややこしいです。
処理について順に説明します(例として B2セルの最終行を取得する場合を説明します)。
- B2 セルから B2の列番号を取得を数字として取得します(たとえば B 列ならば「2」となります)。
- 次に Excel の最大行数 Rows.Count を取得し、これらを組み合わせてB列の最終セル番号(Cells(Rows.Count, Range(nowCell).Column))とを取得します。
- 最後にB列の最終セル番号をEnd(xlUp) と上っていく処理にすればOKです。
今回はこの処理を getLastRow2 プロシージャとしてまとめました。
この関数(プロシージャ)の引数と戻り値は下記になります。
項目名 | 値 | 説明 |
プロシージャ名 | getLastRow2 | 最終行番号取得 |
戻り値 | 指定したシート名の列の最終行番号 | - |
第1引数 | nowCell | セル番号(A1、B2)等 |
二つの処理の違いについて
「これ結局何が違うの?」ってなると思います。
これらの違いは Excel の行の中に空白があるかどうかであり、
空白があると最終行の値が変わってきます。
例えば表の上から列番号を確認するとExcelの処理では空白セル直前のセル行番号になりますが、一番下から確認すると一番下のセル行番号になります。
これらのように違いがあるため、使い分けする必要があります。
Excel の表の最終列番号を取得する処理について
次にExcel の表の最終列番号を取得する方法は2通りあります。
これは前章で説明した「最終行番号取得のノウハウ」と特に変わりありません。
- セルの元々の位置から空白セルの位置まで右に移動して移動
- セルの一番右から空白セルの位置まで右に移動
こちらも「は?どういうこと??」と思われた方もいるかもしれません。
これがどういうことなのかわかりやすく説明します。
セルの元々の位置から空白セルの位置まで右に移動して移動
まずは「セルの元々の位置から空白セルの位置まで右に移動して移動」について説明します。
こんな感じの1~5まで含まれる1行の表があるとします。
ここの一番左のセル番号(B2)を選択します。
そしてキーボードの「→」キーを入力すれば表の一番右のセルに移動できます。
この処理を Excel VBAで実現すればOKっていうことです。
実際の Excel Vba での最終列のセル番号を取得する処理は下記になります。
1 2 3 4 5 6 7 8 9 10 11 |
Sub test() Debug.Print getLastCol("B2") End Sub Function getLastCol(nowCell As String) getMaxCol = Range(nowCell).End(xlToRight).Column End Function |
上記は B2セル(表の一番左)から End(xlToRight) と右にいくこと処理です。
今回はこの処理を getLastCol プロシージャとしてまとめました。
この関数(プロシージャ)の引数と戻り値は下記になります。
項目名 | 値 | 説明 |
プロシージャ名 | getLastCol | 最終列番号取得 |
戻り値 | 指定したシート名の列の最終列番号 | - |
第1引数 | nowCell | セル番号(A1、B2)等 |
セルの一番右から空白セルの位置まで右に移動
まずは「セルの一番右から空白セルの位置まで右に移動」について説明します。
まずはこんな感じの1~5まで含まれる1行の表があるとします。
ここで B列の最終行を選択します。
そしてキーボードの「←」キーを入力すれば表の一番右のセルに移動できます。
この処理を Excel VBAで実現すればOKっていうことです。
実際の Excel Vba での最終列のセル番号を取得する処理は下記になります。
最終行のセル番号は下記になります。
1 2 3 4 5 6 7 8 9 10 11 |
Sub test() Debug.Print getLastCol2("B2") End Sub Function getLastCol2(nowCell As String) getLastCol2 = Cells(Range(nowCell).row, Columns.Count).End(xlToLeft).Column End Function |
処理について順に説明します(例として B2セルの最終列を取得する場合を説明します)。
- B2 セルから B2の行番号を取得を数字として取得します(たとえば B 列ならば「2」となります)。
- 次に Excel の最大列数 Columns.Count を取得し、これらを組み合わせてB列の最終セル番号 Cells(Range(nowCell).row, Columns.Count) とを取得します。
- 最後にB列の最終セル番号をEnd(xlToLeft) と右にいく処理にすればOKです。
この関数(プロシージャ)の引数と戻り値は下記になります。
項目名 | 値 | 説明 |
プロシージャ名 | getLastCol2 | 最終列番号取得 |
戻り値 | 指定したシート名の列の最終列番号 | - |
第1引数 | nowCell | セル番号(A1、B2)等 |
二つの処理の違いについて
「これ結局何が違うの?」ってなると思います。
これらの違いは Excel の列の中に空白があるかどうかであり、
空白があると最終列の値が変わってきます。
例えば表の上から列番号を確認するとExcelの処理では空白セル直前のセル行番号になりますが、一番下から確認すると一番左のセル行番号になります。
これらのように違いがあるため、使い分けする必要があります。
最後に
いかがでしたでしょうか?
今回はこんなことを紹介しました!
- Excel の表の最終行番号を取得する処理について
- Excel の表の最終列番号を取得する処理について
この記事が開発のお役に立てれば幸いです。
ではでは。