
条件に応じてOffsetで入力・変更を行いたい
複数セルを一気に操作したい(Resize)
OffsetやResizeを応用した実務的な使い方が知りたい
結論:Offsetと条件分岐を組み合わせると、“柔軟な自動化”が実現できます!



さらにResize
と組み合わせることで、一気に複数セルを変更したり、データ範囲を動的に扱うことが可能になります。
目次
Offset×Ifで条件付き処理を実装しよう
たとえばA列に「済/未済」のフラグがあり、「未済」の場合に右隣に“対応中”と書きたい、そんな処理ができます。
Dim i As Integer For i = 2 To 10 If Cells(i, 1).Value = "未済" Then Cells(i, 1).Offset(0, 1).Value = "対応中" End If Next i
実務例①:条件一致で横にデータを追加
シナリオ:商品リストで「在庫切れ」と表示されている行の右隣に、備考を記載する。
Dim i As Integer For i = 2 To 50 If Cells(i, 2).Value = "在庫切れ" Then Cells(i, 2).Offset(0, 1).Value = "至急発注" End If Next i



柔軟な列操作が可能になるのがOffsetの魅力。
実務例②:空白セルを見つけたらメッセージを挿入
Dim i As Integer For i = 2 To 20 If Cells(i, 3).Value = "" Then Cells(i, 3).Offset(0, 1).Value = "入力漏れあり" End If Next i



条件分岐+Offsetで“次のセルに書く”処理がスマートに!
Resizeとは?|セル範囲を拡張する命令
Resize
は、1つのセルを起点にして範囲を拡張したいときに使います。
Range("A1").Resize(2, 3).Interior.Color = RGB(200, 255, 200)



A1を起点に、縦2行・横3列の範囲(A1:C2)に色をつける
Offset×Resizeの活用パターン
例:現在のセルの右隣3列分をまとめて塗りつぶす
Dim i As Integer For i = 2 To 6 If Cells(i, 1).Value = "重要" Then Cells(i, 1).Offset(0, 1).Resize(1, 3).Interior.Color = RGB(255, 230, 230) End If Next i
Offset(0, 1)
:右隣に移動Resize(1, 3)
:高さ1行×幅3列の範囲を対象
→ 結果:右隣3列分(B~D列)を一括操作
よくあるミスと注意点
OffsetのあとにResizeをつなげると、元のセルからではなくOffsetした場所を基準に拡張される
Resizeの引数は (行数, 列数)
の順なので、逆に書かないよう注意
まとめ|Offset×If×Resizeで実務効率を一気に上げよう!
テクニック | 内容 | 活用例 |
---|---|---|
Offset | 指定セルからのずらし | 条件に応じた書き込みや色変更 |
If文 | 条件分岐 | 入力済かどうかで処理を分ける |
Resize | セル範囲の拡張 | 複数列・複数行の一括処理 |



この3つを組み合わせることで、マクロは一気に“実務レベル”へと進化します。
コメント