Range と Cells を組み合わせて「最終行まで処理する」例
Excel VBAでは「データがどこまで入っているか分からない」ケースがよくあります。そんなときに便利なのが Range と Cells の組み合わせです。これで「最終行まで自動で処理」できます。
基本の流れ
- 最終行を調べる
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
VBRows.Count → Excelの最大行数(例: 1,048,576行).End(xlUp) → 一番下から上に向かってデータがあるセルを探すRow → そのセルの行番号を取得
👉 この例では「A列の最終行」を調べています。
- Range と Cells を組み合わせて処理範囲を指定
Range(Cells(1, 1), Cells(lastRow, 1))
VBA1から最終行までの範囲を自動で指定できる
例1:A列のデータをB列にコピー
Sub A列をB列にコピー()
Dim lastRow As Long
Dim i As Long
' A列の最終行を取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 1行目から最終行まで処理
For i = 1 To lastRow
Cells(i, 2).Value = Cells(i, 1).Value
Next i
End Sub
VB解説
Cells(i, 1)→ A列のi行目Cells(i, 2)→ B列のi行目- ループで最終行まで繰り返しコピー
例2:A列の数値を2倍してB列に書き込む
Sub A列を2倍してB列へ()
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
If IsNumeric(Cells(i, 1).Value) Then
Cells(i, 2).Value = Cells(i, 1).Value * 2
End If
Next i
End Sub
VB解説
IsNumeric→ 数値かどうか判定- 数値だけを対象にして安全に処理
例3:範囲をまとめて色付け
Sub A列の範囲を色付け()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' A1〜A最終行を黄色に
Range(Cells(1, 1), Cells(lastRow, 1)).Interior.Color = vbYellow
End Sub
VB解説
Range(Cells(1,1), Cells(lastRow,1))→ A1から最終行までの範囲.Interior.Color→ 背景色を変更
まとめ
- Range は範囲指定に便利
- Cells は数値で動的に指定できる
- 組み合わせると「最終行まで自動処理」が可能
