VBAでの『エクセルのワークシートの最終行の値・行数の取得』はとても頻繁に使われるテクニックです。
「ワークシートにある表の全ての値を取得したい」ときなどでは、必ず必要になる技術です。
そんなVBAでは必須レベルの「ワークシートの最終行の値・行数の取得の方法」を、簡単なのでぜひ覚えていってください。
ちなみに最終列を求める場合は『最終列を取得する方法』を読んでみてください。
入力データの最終行を取得する方法
ここでは「Endプロパティ」を使って最終行を取得していきます。
そして、ここで使う表は下の通りです。
では、さっそく最終行を調べてみます。
【欠点あり】End(xlDown)で最終行を取得する
下のコードで最終行を取得することができます。
1 2 3 4 5 6 7 8 9 |
Sub sample1() ' --- 最終行の値を取得 Debug.Print Range("B2").End(xlDown) ' --- 最終行の行数を取得 Debug.Print Range("B2").End(xlDown).Row End Sub |
上のコードではEndプロパティの引数になっている「xlDown」を入れています。
この「xlDown」とは”Ctrlキー + ↓”を押したときと同等の動きをします。
つまり、上の『Range(“B2”).End(xlDown)』は「セルB2を選択した状態でCtrlキー + ↓を押したときの値を取得する」ということになります。
そして、上の表と同じモノを作り、上の動作を行うと「.End(xlDown)」の欠点に気づけます。
その欠点は下の結果を見てもらうと分かります。
値では「6行目」、最終行の行数は「8」となっています。
つまり、「End(xlDown)」では”空白”があると、その地点を最終行とみなしてしまうわけです。
なので、ここで紹介した最終行の取得は”必ずデータが連続して入力される”時だけ使うようにしましょう。
補足『Range(“B2”).End(xlDown).Row』は…。
×:セルB2から何行目が最終行か
〇:セルB2を選択した状態で「Ctrlキー + ↓」を押したときに選択されるセルはB列上で何行目か
一番下から最終行を取得する
下のコードで上の欠点を解消した、最も使われる最終行を取得の仕方になります。
1 2 3 4 5 6 7 8 9 10 11 |
Sub sample4() ' --- 最終行の値を取得 Debug.Print Cells(Rows.Count, 2).End(xlUp) ' --- 「Range("B1048576").End(xlUp)」でも同じ結果が得られる ' --- 最終行の行数を取得 Debug.Print Cells(Rows.Count, 2).End(xlUp).Row End Sub |
上のコードではEndプロパティの引数になっている「xlUp」を入れています。
この「xlUp」とは”Ctrlキー + ↑”を押したときと同等の動きをします。
加えて、『Cellsプロパティ』の第一引数に「Rows.Count」を記述することでシート上の最終行まで移動し選択しています。
※Cells(行数, 列数)です。
つまり、上の『Cells(Rows.Count, 2).End(xlUp)』は「B列の一番下のセルを選択した状態でCtrlキー + ↑を押したときの値を取得する」ということになります。
なので、上で紹介したコードの”空白のセルを最終行として認識することはない”ということです。
※下から最も近いデータの入ったセルを最終行として認識するから。
ちなみに上のコードを実行すると下のような結果が得られます。
最終行の値も行数もあっていますね。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク