
Range
とOffset
ってどう違うの?
なぜOffsetを使う必要があるの?
実務で使えるOffsetの書き方を知りたい!
結論:Offsetは「基準セルからのずらし」で範囲を柔軟に操作できる命令



Range
は直接セルや範囲を指定するのに対し、Offset
は「今いるセルから何行何列ずらすか」を指定します。
データの繰り返し処理や自動入力の場面で非常に便利です。
目次
Rangeとは?|直接指定できる基本命令
Range("A1").Value = "こんにちは" Range("B2:D4").Interior.Color = RGB(255, 255, 0)
セルの番地や範囲を文字列で指定
単体でも複数セルでもOK
処理対象が明確で、読みやすい
Offsetとは?|基準からの「ずらし」でセルを取得
Range("A1").Offset(1, 0).Value = "下のセル"
行数(縦方向)・列数(横方向)でずらしてセルを指定
(1, 0)
→ 下に1行、右に0列ずらす
(0, 1)
→ 同じ行で右に1列ずらす
動的な位置指定に非常に強い
RangeとOffsetの違い
比較項目 | Range | Offset |
---|---|---|
指定方法 | "A1" などの固定位置 | (行, 列) のずらし指定 |
処理対象 | 直接セル・範囲を指定 | 元のセルを基準にした相対位置 |
向いている処理 | 単発の処理や固定位置 | ループ・動的入力・ずらし処理 |
Offsetの実践例|処理を自動化するテクニック
① 連続入力を自動でずらして実行
Dim i As Integer For i = 0 To 4 Range("A1").Offset(i, 0).Value = "データ" & i Next i



A1~A5までに「データ0」「データ1」…と入力。
② 行と列を同時にずらす
Range("B2").Offset(2, 3).Value = "ずらし完了"



B2セルから下に2行・右に3列ずらしたセルに書き込む。
対象セル:E4
よくあるミスと注意点
マイナスも使える:Offset(-1, 0)
は上のセル
Offsetは「セル操作専用」:行列削除などの構造操作には使えない
オフセットの基準がどこかを常に意識する
Range("A1").Offset(0, 1).Value = "右隣" ' → B1
まとめ|Offsetは“動きのある処理”に最適!
固定処理 → Range
動的処理 → Offset
特にループ処理や可変データの扱いにはOffsetが力を発揮します。
コメント