MENU

【初心者向け】RangeとOffsetの違いと使い方まとめ

A子さん

RangeOffsetってどう違うの?
なぜ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の違い

比較項目RangeOffset
指定方法"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が力を発揮します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次