「Excel VBAで、データの最終行や最終列を取得したいけど、どうやってやるのだろう...」
そんな疑問を持っていませんか?

・もう手動で表の終わりを探したくない!
・任意のセル範囲で最終行・最終列の番号やデータを取得したい



その場合は、VBAを使用して「最終行・最終列」を
取得すると解決しますよ!
この記事では、Excel VBAを使って「最終行」・「最終列」の「セル番号」や「値」を取得する方法を詳しく解説します。
「最終行」・「最終列」の「セル番号」や「値 」を効率よく取得することで、Excelでのデータ操作が簡単になり、作業の効率を大幅に向上させることができます。
基本的な使い方から、実際の業務で役立つ応用例まで、分かりやすく解説していきます。
ぜひ最後までお読みください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?
そんな方には、UdemyのVBA講座がおすすめです。
動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!


\ 自分のペースで学べるVBA講座はこちら /
この記事を見て「できるようになる」こと
- VBAでの最終行・最終列を取得すると何ができるか?確認する
- VBAでの最終行・最終列のセル番号の取得方法を理解する
- 最終行・最終列を取得する際の注意ポイントを把握する
- 最終行・最終列を実際に取得する方法を確認する
VBAで最終行・最終列を取得すると何ができる?
VBAで最終行・最終列を取得するとは、Excelシート内のデータが入力されている最後の行や列を動的に見つける操作のことです。
通常、Excelでは「Ctrl + ↓(下矢印)」や「Ctrl + →(右矢印)」でデータの終端を探すことができますが、VBAを使うことで、毎回最新のデータ範囲を自動で検出できます。


VBAの最終行・最終列を活用する3つのメリット



でも、VBAで最終行・最終列が取得できたら
具体的にどんなことが便利になるの?



VBAで最終行・最終列を取得すると、データの増減に自動対応でき、手作業で範囲を選択する手間が不要になります!
その結果、業務効率が大幅にアップし、ミスも減らすことができますよ。
ここでは最終行・最終列を取得すると便利になる、以下の3つの場面を紹介します。
これにより、手作業を減らし、ミスを防ぐことで業務の効率を大幅にアップできます! 🚀
- 大量データのコピーを自動化
- データ範囲が変動しても、最終行まで自動選択してコピー可能になります。
これにより毎回手作業で範囲を指定する必要がなくなります。
- データ範囲が変動しても、最終行まで自動選択してコピー可能になります。
- ループ処理を最適化(繰り返し処理の高速化)
- 最終行・最終列を取得することで、不要な繰り返し処理を削減し、VBAの実行速度を向上させることができます!
- グラフや表のデータ範囲を自動更新
- データが追加されても、VBAが最新の最終行・最終列を取得し、グラフや表を自動で更新することができます!
VBAで「最終行」と「最終列」の番号を取得する基本的な方法を解説
それでは、VBAで最終行・最終列の番号を取得するコードを紹介します。
最終行を取得するコード
最終行を取得するためのVBAコードは以下の通りです。


項目 | 説明 |
---|---|
Cells(Rows.Count, "A") | 「列A」の最終行の番号(通常は1,048,576)を示すセルを指定します。 ※Excelのバージョンにより最終行の番号が異なる場合があります。 |
"A" の部分 | 列の指定は“A”のように文字(アルファベット)だけでなく、列番号(数値)でも可能です。 例えば、 Cells(Rows.Count, 1) と書くと、同じくA列の最終行を指定できます。 |
.End(xlUp) | 指定したセル(最終行)から上方向に向かって、最初にデータが入力されているセルを探します。 これはExcelのショートカット Ctrl + ↑ を押したときと同じ動作をします。.End メソッドについては事項「.End-メソッドの使い分けについて」をご確認ください。 |
.Row | 見つかったセルの行番号を取得し、変数 lastRow に格納します。 |
最終列を取得するコード
最終列を取得するためのVBAコードは以下の通りです。


項目 | 説明 |
---|---|
Cells(1, Columns.Count) | Excelシートの 「最終列」(通常は16,384列目) の1行目を示すセルを指定します。 ※このコードでは、Excel 2010以降の最終列である「XFD1」セルを指します。 |
1 の部分 | 行の指定は“1”のように数値で設定できますが、他の行にも変更可能です。 例えば、 Cells(2, Columns.Count) にすると、2行目の最終列を取得できます。 |
.End(xlToLeft) | 指定したセル(最終列)から左方向に向かって、最初にデータが入力されているセルを探します。 Excelのショートカット Ctrl + ← と同じ動作です。.End メソッドについては事項「.End-メソッドの使い分けについて」をご確認ください。 |
.Column | 見つかったセルの列番号を取得し、変数 lastCol に格納します。 |
.End メソッドの使い分けについて
最終行・最終列を取得する際に使用する .End
メソッドには、以下の4種類があります。
メソッド | 用途 | 説明 |
---|---|---|
.End(xlUp) | 下から最終行を取得 | 指定したセル(通常はシートの最下行)から 上方向 に向かって、 最初にデータが入力されているセルを探す。 Excelの Ctrl + ↑ と同じ動作。 |
.End(xlDown) | 上から最終行を取得 | 指定したセル(通常は表の先頭行)から 下方向 に向かって、 最初にデータが入力されているセルを探す。 Excelの Ctrl + ↓ と同じ動作。 |
.End(xlToLeft) | 右から最終列を取得 | 指定したセル(通常はシートの最終列)から 左方向 に向かって、 最初にデータが入力されているセルを探す。 Excelの Ctrl + ← と同じ動作。※左右の場合は、xlの後にToが付きます。 |
.End(xlToRight) | 左から最終列を取得 | 指定したセル(通常は表の先頭列)から 右方向 に向かって、 最初にデータが入力されているセルを探す。 Excelの Ctrl + → と同じ動作。※左右の場合は、xlの後にToが付きます。 |
VBAで「最終行」と「最終列」を取得する「4つ」のパターンを解説
【 パターン別コード解説 】
「最終行」の行番号・値取得する方法
最終行-1 : 最終行から上昇し、行番号・値を取得する
次のコードは、シートの最終行から上方向に検索し、最初にデータが見つかった行番号・値を取得します。


Dim lastRow As Long
Dim lastValue As Variant
'// 最終行の行番号を取得
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
'// 最終行の値を取得
lastValue = Cells(lastRow, "B").Value
- Cells(Rows.Count, “B”)
- 「列B」の最終行の番号(通常は1,048,576)を示すセルを指定しています。
この「Cells(Rows.Count, “B”)」は、セル「A1048576」を指します。
※エクセルのバージョンで、最終行は異なります。
補足:
「B」の部分は他の列に変更することが可能です。
たとえば、列Cの最終行を取得したい場合は、「C」に変更してください。
- 「列B」の最終行の番号(通常は1,048,576)を示すセルを指定しています。
- .End(xlUp)
- 指定したセルから上方向に向かって最初にデータが入力されているセルを探します。
これはExcelで「Ctrl + ↑」を押したときと同じ動作です。
- 指定したセルから上方向に向かって最初にデータが入力されているセルを探します。
- .Row
- 見つかったセルの行番号を取得します。
これにより、データが入力されている最後の行番号が、任意の変数「lastRow」に格納されます。
- 見つかったセルの行番号を取得します。
- lastValue = Cells(lastRow, “B”).Value
- 先ほど取得した最終行の行番号を使い、その行の値を取得します。
変数「lastRow」の行番号の「B列」にある値を取得し、変数「lastValue」に格納します。
- 先ほど取得した最終行の行番号を使い、その行の値を取得します。
■ よく使われる例
この方法は、表のデータが飛び飛びになっている場合や、途中に空白行がある場合に特に役立ちます。
空白行があっても、最下部からデータを探し始めるため、正確に最終行とその値を取得できます。
最終行-2 : 指定したセルから下降し、行番号・値を取得する
次のコードは、シートの指定したセルから下方向に検索し、最後のデータが見つかった行番号を取得します。


Dim lastRow As Long
Dim lastValue As Variant
'// 最終行の行番号を取得
lastRow = Cells(2, "B").End(xlDown).Row
'// 最終行の値を取得
lastValue = Cells(lastRow, "B").Value
- Cells(2, “B”)
- この部分では、最初に検索を開始するセルを指定しています。
今回の例では、セル「B2」から下方向に検索を開始します。
補足:
「B」の部分は他の列に変更可能です。
たとえば、列Cのデータで検索を開始したい場合は、「C」に変更してください。
また、行番号「2」も必要に応じて変更できます。
- この部分では、最初に検索を開始するセルを指定しています。
- .End(xlDown)
- この部分は、指定したセル(B2)から下方向に向かって、データが入力されている最後のセルを探す動作を行います。
Excelのキーボードショートカット「Ctrl + ↓」を押したときと同じ動作をします。
- この部分は、指定したセル(B2)から下方向に向かって、データが入力されている最後のセルを探す動作を行います。
- .Row
- .Rowは、見つかったセルの行番号を取得します。
このコードでは、変数lastRowに最終行の行番号が格納されます。
- .Rowは、見つかったセルの行番号を取得します。
- lastValue = Cells(lastRow, “A”).Value
- 取得した行番号を使って、その行の値を取得します。
今回の例では、「B列」の最終行の値を変数「lastValue」に格納します。
- 取得した行番号を使って、その行の値を取得します。
■ よく使われる例
この方法は、データが連続している場合や、空白行がない表形式のデータに特に有効です。
データが途中で途切れていない限り、指定したセルから最終行とその値を素早く取得できます。


「最終列」の行番号・値取得する方法
最終列-1 : 最終列から左に行き、列番号・値を取得する
次のコードは、シートの最終列から左方向に検索し、最初にデータが見つかった列番号・値を取得します。


Dim lastCol As Long
Dim lastValue As Variant
'// 最終列の列番号を取得
lastCol = Cells(2, Columns.Count).End(xlToLeft).Column
'// 最終列の値を取得
lastValue = Cells(2, lastCol).Value
- Cells(2, Columns.Count)
- この部分では、シートの2行目の最終列を指定しています。
Columns.Countは、シート内の列数を表し、通常Excel 2010以降のバージョンでは16,384列が最終列(「XFD列」)となります。
このコードでは、「XFD2」セルを指定します。
補足:
開始行「2」や列を指定する部分は、用途に応じて変更できます。
例えば、行番号を「1」にすれば1行目の最終列を検索するようになります。
- この部分では、シートの2行目の最終列を指定しています。
- .End(xlToLeft)
- 指定したセル(XFD2)から左方向に向かって、最初にデータが入力されているセルを探します。
これは、Excelのキーボードショートカット「Ctrl + ←」を押したときと同じ動作です。
- 指定したセル(XFD2)から左方向に向かって、最初にデータが入力されているセルを探します。
- .Column
- 見つかったセルの列番号を取得します。
この結果、データが入力されている最後の列番号が、変数「lastCol」に格納されます。
- 見つかったセルの列番号を取得します。
- lastValue = Cells(2, lastCol).Value
- 取得した列番号を使って、その列の値を取得します。
今回の例では、2行目の最終列に入力されている値を変数「lastValue」に格納します。
- 取得した列番号を使って、その列の値を取得します。
■ よく使われる例
この方法は、データが途中で途切れている場合や、空白の列が含まれている場合に特に有効です。
最終列から左に向かってデータを探し始めるため、正確に最終列とその値を取得できます。
最終列-2 : 指定したセルから右に行き、列番号・値を取得する方法
次のコードは、シートの指定したセルから右方向に検索し、最後のデータが見つかった列番号とその値を取得します。


Dim lastCol As Long
Dim lastValue As Variant
'// 最終列の列番号を取得
lastCol = Cells(2, "B").End(xlToRight).Column
'// 最終列の値を取得
lastValue = Cells(2, lastCol).Value
- Cells(2, “B”)
- この部分では、検索を開始するセルを指定しています。
今回の例では、セル「B2」から右方向に検索を開始します。
補足:
この部分の列や行を変更することで、任意のセルから検索を開始できます。
たとえば、セル「C3」から検索したい場合は、Cells(3, “C”)に変更します。
- この部分では、検索を開始するセルを指定しています。
- .End(xlToRight)
- 指定したセル(B2)から右方向に向かって、データが入力されている最後のセルを探します。
これは、Excelのキーボードショートカット「Ctrl + →」を押したときと同じ動作です。
- 指定したセル(B2)から右方向に向かって、データが入力されている最後のセルを探します。
- .Column
- .Columnは、見つかったセルの列番号を取得します。
この結果、変数lastColにデータが入力されている最後の列の番号が格納されます。
- .Columnは、見つかったセルの列番号を取得します。
- lastValue = Cells(2, lastCol).Value
- 取得した列番号を使って、その列の値を取得します。
このコードでは、2行目の最終列に入力されている値を変数「lastValue」に格納します。
- 取得した列番号を使って、その列の値を取得します。
■ よく使われる例
この方法は、データが連続している場合や、空白列がない場合に特に有効です。
指定したセルから右方向に連続するデータの最後の列を素早く特定し、その値を取得できるため、効率的に操作を行えます。
VBAで「最終行」と「最終列」を取得する際の注意ポイント
最終行や最終列を取得する際には、いくつかの注意ポイントがあります。
これらに注意を行わないと正常に最終行・最終列が取得できなくなる可能性があるため、注意しましょう。
注意ポイント1: 空白セルに注意する
最終行や最終列の取得では、空白セル (スペース) が含まれていると正しい範囲を取得できないことがあります。
発生する問題
このようにデータが飛び飛びになっていると、途中の空白セルで取得が止まる可能性があります。


対策について
- 表の中に意図しない空白セルがないか事前にチェックする。
- 空白セルを含めても正しく取得できる方法(UsedRange や Find メソッドなど)を検討する。
注意ポイント2: 適切なメソッドを使用する
データの最終行や最終列を正確に取得するためには、適切なメソッド(xlUpやxlToLeft)を使用することが重要です。
発生する問題
.End(xlUp)
を使用すると、途中に空白がある場合、正しい最終行を取得できない可能性がある。.End(xlToLeft)
で途中に空白列があると、正しい最終列を取得できないことがある。- データの配置によって適切なメソッドが異なるため、状況に応じた使い分けが必要。
対策について
- 使用する.End-メソッドを適切に選ぶ。
- .End-メソッドの使い分けについて」を確認する。 もう一度、「
注意ポイント3: フィルターや非表示セルに注意する
フィルターや非表示行・列がある場合、取得結果が意図しないものになることがあります。
発生する問題
- フィルターが適用されたままだと、表示されている最終行・最終列を取得してしまうことがある。
- 非表示行・非表示列があると、それらを含めずに範囲を取得する場合がある。
対策について
- フィルターを解除してから最終行・最終列を取得する(AutoFilter の解除)。
- 「UsedRange」や「Find」メソッドを使い、すべてのセルを対象にする。
- 「VisibleCells」プロパティを活用し、表示されているセルだけを対象にする。
Dim lastRow As Long
lastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count
「最終行」「最終列」取得の使用例をご紹介
ここからは、最終行・最終列を取得する具体的な使用例を紹介します。
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?
そんな方には、UdemyのVBA講座がおすすめです。
動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!


\ 自分のペースで学べるVBA講座はこちら /
使用例1: 表の最終行までFor文で繰り返す
Excelシートの指定した列の最終行まで繰り返し処理を行い、各セルに対して操作を実行する方法を紹介します。
- 表のデータを1行ずつ処理したい
- データの増減に応じて、最終行を動的に取得したい
- ループ処理で正確にデータを処理したい
コード
Sub LoopThroughRows()
Dim lastRow As Long
Dim i As Long
'// 最終行を取得
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
'// 2行目から最終行まで繰り返し処理を行う
For i = 3 To lastRow
'// セルに対して任意の処理を実行
Cells(i, "E").Value = "処理済み"
Next i
End Sub
処理結果


コードの動作概要
まず、表の最終行を取得します。
Cells(Rows.Count, “B”).End(xlUp).Rowを使って、指定した列(この場合はB列)の最終行を動的に取得します。
次に、取得した最終行までの範囲でFor文を使って繰り返し処理を行います。
3行目から最終行まで繰り返し処理を実行します。
繰り返し処理内で、指定した列に対して「処理済み」と入力する操作を行います。
このコードで使用している機能
機能名 | 説明 |
---|---|
Dim (変数) | 変数を宣言し、データの格納場所を確保する。 |
Cells(Rows.Count, “B”).End(xlUp).Row | B列の最下行(通常は1,048,576行目)から上方向に検索し、 最初にデータがある行番号を取得する。 |
For文 (繰り返し処理) | 指定した開始位置~終了位置まで1つずつ処理するループする。 |
Cells(i, “E”) | i 行目の E列のセルを指定 する。ループ処理の中で使用することで、E列の各行にデータを入力 できる。 |
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub LoopThroughRows()
- 新しいサブルーチン「LoopThroughRows」を定義します。
このサブルーチンは、指定された範囲内で繰り返し処理を行います。
- 新しいサブルーチン「LoopThroughRows」を定義します。
- Dim lastRow As Long
- 最終行を格納するための変数「lastRow」をLong型で宣言します。
- Dim i As Long
- 繰り返し処理のカウンタ変数「i」をLong型で宣言します。
この変数は、繰り返し処理を行う際に使用します。
- 繰り返し処理のカウンタ変数「i」をLong型で宣言します。
- lastRow = Cells(Rows.Count, “B”).End(xlUp).Row
- この行は、B列の最終行を取得します。
「Cells(Rows.Count, “B”)」は「B列」の最終行を指し、「End(xlUp)」はそのセルから上方向に向かって最初にデータが見つかった行を探します。
これにより、最終行の行番号が変数「lastRow」に格納されます。
- この行は、B列の最終行を取得します。
- For i = 3 To lastRow
- 3行目から最終行までの範囲で繰り返し処理を開始します。
カウンタ「i」は「3」から「lastRow」までの値を取り、各行に対して処理を実行します。
- 3行目から最終行までの範囲で繰り返し処理を開始します。
- Cells(i, “E”).Value = “処理済み”
- 繰り返し処理内で、現在の行の「E列」に「処理済み」という文字列を入力します。
これにより、対象の行に対して処理が完了したことを示します。
- 繰り返し処理内で、現在の行の「E列」に「処理済み」という文字列を入力します。
- Next i
- 繰り返しの次のサイクルに移行し、次の行に対して処理を続行します。
最終行に達するまで繰り返されます。
- 繰り返しの次のサイクルに移行し、次の行に対して処理を続行します。
- End Sub
- サブルーチンの終了を示しています。
すべての処理が完了すると、このサブルーチンは終了します。
- サブルーチンの終了を示しています。
このコードは、Excelシートの指定された範囲内で繰り返し処理を行う際に非常に便利です。
特定の列に処理が完了したことを示すマークを付けるなど、データ処理の結果をわかりやすく可視化するために使用できます。
データが増減しても動的に最終行を取得して処理を行うため、効率的かつ柔軟な対応が可能です。
使用例2: 表の最終行の1つ下にデータを追加する
指定された列の最終行を取得し、その1つ下の行に新しいデータを追加する方法を紹介します。
新しいデータを表に追加していく作業に適しています。
- 既存のデータの末尾に新しいデータを追加したい
- 手作業なしで、自動的に最終行を判定しデータを追加したい
- 常に最新のデータを記録する仕組みを作りたい
コード例
Sub AddDataToLastRow()
Dim lastRow As Long
'// 最終行を取得
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
'// 最終行の次の行にデータを追加
Cells(lastRow + 1, "B").Value = "新しいデータ"
End Sub
処理結果


コードの動作概要
表の最終行を取得します。
Cells(Rows.Count, “B”).End(xlUp).Row を使用して、B列の最終行を動的に取得します。
取得した最終行の1つ下の行を特定し、そこに新しいデータを追加します。
最後に、新しいデータをB列の最終行の1つ下に追加します。
このコードで使用している機能
機能名 | 説明 |
---|---|
Dim (変数) | 変数を宣言し、データの格納場所を確保する。 |
Cells(Rows.Count, “B”).End(xlUp).Row | B列の最下行(通常は1,048,576行目)から上方向に検索し、 最初にデータがある行番号を取得する。 |
Cells(lastRow + 1, “B”) | 最終行の1つ下のB列に「新しいデータ」を入力する処理。。 |
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub AddDataToLastRow()
- 新しいサブルーチン「AddDataToLastRow」を定義します。
このサブルーチンは、指定された列の最終行を取得し、その次の行にデータを追加します。
- 新しいサブルーチン「AddDataToLastRow」を定義します。
- Dim lastRow As Long
- 最終行の行番号を格納するための変数「lastRow」をLong型で宣言します。
- lastRow = Cells(Rows.Count, “B”).End(xlUp).Row
- 「B列」の最終行を取得します。
「Cells(Rows.Count, “B”)」は「B列」の最終行を指し、「End(xlUp)」はそのセルから上方向に向かって最初にデータが見つかった行を探します。
この行番号が変数「lastRow」に格納されます。
- 「B列」の最終行を取得します。
- Cells(lastRow + 1, “B”).Value = “新しいデータ”
- 「Cells(lastRow + 1, “B”)」で、最終行の1つ下の行、B列に新しいデータを追加します。
ここでは「新しいデータ」という文字列を入力しています。
- 「Cells(lastRow + 1, “B”)」で、最終行の1つ下の行、B列に新しいデータを追加します。
- End Sub
- サブルーチンの終了を示しています。
すべての処理が完了すると、このサブルーチンは終了します。
- サブルーチンの終了を示しています。
このコードは、Excelの表に新しいデータを追加する際に非常に有効です。
最終行を自動的に検出し、その1つ下の行にデータを追加することで、データが増えても簡単に管理できます。
ルーチン作業の一部を自動化するのに役立ち、作業効率を大幅に向上させることができます。
使用例3: グラフのデータ範囲を最終行まで自動更新する
このコードでは、 Excelのグラフのデータ範囲を、最終行まで自動更新する方法を紹介します。
新しいデータを追加しても、VBAが最終行を検知し、グラフ範囲を自動調整することで、常に最新のデータを反映できます。
- 新しいデータを追加するたびにグラフを更新したい
- データの増減に応じて、手作業なしでグラフ範囲を自動調整したい
- リアルタイムでグラフを最新の状態に保ちたい
コード例
Sub UpdateChartRange()
Dim lastRow As Long
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim dataRange As Range
'// 対象のシートを設定
Set ws = ThisWorkbook.Sheets("Sheet1")
'// 最終行を取得(A列のデータを基準)
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
'// 新しいデータ範囲を設定
Set dataRange = ws.Range("A1:B" & lastRow) '// A列~B列の最終行までを範囲とする
'// グラフオブジェクトを取得(シートにある最初のグラフ)
Set chartObj = ws.ChartObjects(1)
'// グラフのデータ範囲を更新
chartObj.Chart.SetSourceData Source:=dataRange
End Sub
処理結果


コードの動作概要
ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
を使用して、 A列の最終行を取得します。
取得した最終行を反映したデータ範囲(A1:B最終行)をdataRange
に設定します。
chartObj.Chart.SetSourceData Source:=dataRange
を使い、グラフのデータ範囲を新しいデータ範囲に更新します。
このコードで使用している機能
機能名 | 説明 |
---|---|
Range (セル範囲を指定) | セル範囲を指定するオブジェクト |
Cells(Rows.Count, “A”).End(xlUp).Row | A列の最終行を取得する。データの終端を動的に 検出するために使用。 |
Dim – Set (オブジェクト変数) | 取得した lastRow を用いて、A1:B最終行までの範囲を設定する。 |
ChartObjects(1) | シート上の最初のグラフオブジェクトを取得する。 |
Chart.SetSourceData Source:=dataRange | グラフのデータ範囲を新しく設定したdataRange に更新する。 |
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub UpdateChartRange()
- 新しい サブルーチン「UpdateChartRange」を定義します。
このマクロは 最終行を検知し、グラフのデータ範囲を更新するために使用します。
- 新しい サブルーチン「UpdateChartRange」を定義します。
- Dim lastRow As Long
- 「lastRow」: 最終行の行番号を格納する変数(Long型)
- Dim ws As Worksheet
- 「ws」: 作業するワークシートを格納する変数(Worksheet型)
- Dim chartObj As ChartObject
- 「chartObj」 : グラフオブジェクトを格納する変数(ChartObject型)
- Dim dataRange As Range
- 「dataRange」: データの範囲を格納する変数(Range型)
- Set ws = ThisWorkbook.Sheets(“Sheet1”)
- オブジェクト変数「ws」に「Sheet1″」を指定し、マクロが操作する対象シートを設定します。
⇒ 対象のシート名は適宜変更してください。
- オブジェクト変数「ws」に「Sheet1″」を指定し、マクロが操作する対象シートを設定します。
- lastRow = ws.Cells(ws.Rows.Count, “A”).End(xlUp).Row
- A列の最終行の行番号を取得し、変数「lastRow」に格納します。
「End(xlUp)」は「Ctrl + ↑」キーの動作と同じで、A列の最後に入力されたセルを取得します。
- A列の最終行の行番号を取得し、変数「lastRow」に格納します。
- Set dataRange = ws.Range(“A1:B” & lastRow)
- 取得した変数「lastRow」を使って、「A1:B最終行」までのデータ範囲をオブジェクト変数「dataRange」に格納します。
「Range(“A1:B” & lastRow)」により、データの範囲が動的に変化します。
- 取得した変数「lastRow」を使って、「A1:B最終行」までのデータ範囲をオブジェクト変数「dataRange」に格納します。
- Set chartObj = ws.ChartObjects(1)
- 「ws.ChartObjects(1)」を使って、ワークシート上の1つ目のグラフを取得します。
複数のグラフがある場合は、適宜 (1) の番号を変更してください。
- 「ws.ChartObjects(1)」を使って、ワークシート上の1つ目のグラフを取得します。
- chartObj.Chart.SetSourceData Source:=dataRange
- グラフのデータ範囲をオブジェクト変数「dataRange」に更新します。
新しいデータが追加された場合でも、自動でグラフに反映されます。
- グラフのデータ範囲をオブジェクト変数「dataRange」に更新します。
- End Sub
- サブルーチンの終了を示しています。
すべての処理が完了すると、このサブルーチンは終了します。
- サブルーチンの終了を示しています。
総括・ポイント
このコードを実装すると、 Excelのグラフが常に最新のデータを反映するようになります。
データを追加するたびに 手作業でグラフの範囲を変更する手間をなくし、業務の効率を向上させます。
この記事のまとめ
「最終行・最終列の取得」は、Excel VBAでデータの範囲を動的に管理し、効率的に操作するために欠かせない技術です。
このスキルを使えば、データが増減する場面でも正確にデータ範囲を把握し、自動化された処理や分析を行うことができます。
ポイントのおさらい
- 最終行・最終列の取得方法を理解する
- 最終行や最終列を取得する方法には、下から上昇して取得する方法と、上から下降して取得する方法があります。
それぞれの方法は、データの配置や形状に応じて使い分けることで、正確な範囲を取得できます。
⇒ 「VBAで最終行・最終列を取得すると何ができる?」をもう一度見る。
⇒ 「VBAで「最終行」と「最終列」を取得する「4つ」のパターンを解説」をもう一度見る。
- 最終行や最終列を取得する方法には、下から上昇して取得する方法と、上から下降して取得する方法があります。
- 最終行・最終列を取得する際の注意ポイントを理解する
- 空白セルが含まれていると正確な範囲を取得できないことがあります。
適切なメソッドを選び、誤動作を防ぐために注意が必要です。
⇒ 「最終行・最終列を取得する際の注意ポイント」もう一度見る。
- 空白セルが含まれていると正確な範囲を取得できないことがあります。
- 最終行・最終列を使った具体的な操作例を確認する
- 実際の操作例を通じて、最終行・最終列を利用した効率的なデータ処理方法を学びました。
⇒ 「「最終行・最終列」の使用例をご紹介」もう一度見る。
- 実際の操作例を通じて、最終行・最終列を利用した効率的なデータ処理方法を学びました。
この記事の使用例を実践することで、VBAでの最終行・最終列の取得方法をマスターし、さまざまなデータ操作の効率を上げることができます。
サンプルコードをコピーして実行し、少しずつ自分の業務に応じたアレンジを加えていくことで、VBAの活用範囲を広げましょう。
まずは、日常の業務に取り入れて、作業効率の向上を実感してみてください。

