はじめに
「表の中から今日の日付を探して、その『隣のセル』に売上を入力したい」 そんなとき、あなたを助けてくれるのがOffset(オフセット)という魔法です。
Findが「目的の場所を見つける目」なら、Offsetは「そこから移動する足」のようなもの。この2つを組み合わせることで、VBAの自由度は一気に跳ね上がります。
1. Offset(オフセット)ってなに?
一言でいうと、「今いる場所から、指定した分だけズレた場所を指差す」機能です。
「Find」で見つけたセルを基準にして、「1つ右のセル」や「1つ下のセル」をピンポイントで狙い撃ちできます。
2. あなたが使うための「魔法の書き方」
基本の形はこうなります。
見つけたセル.Offset( 行の移動 , 列の移動 )
- 行の移動:プラスなら「下」、マイナスなら「上」へ動きます。
- 列の移動:プラスなら「右」、マイナスなら「左」へ動きます。
【例題】日付を探して、その隣に収益を入力しよう
「日報の記録」をイメージした例題です。A列から「今日の日付」を探して、その右隣(B列)に収益を書き込みます。
VBA
Sub 日報を入力する()
Dim 見つけた場所 As Range
Dim 今日 As String
今日 = "2026/03/03" ' あなたが探したい日付
' 1. まずは「今日」という言葉をA列から探す(Find)
Set 見つけた場所 = Range("A:A").Find(What:=今日)
' 2. もし見つかったら、そこから「右に1つ」ズレた場所に書き込む(Offset)
If Not 見つけた場所 Is Nothing Then
' Offset(0, 1) は「行は動かず、列を右に1つ動かす」という意味です
見つけた場所.Offset(0, 1).Value = "500円"
MsgBox 今日 & " の隣のセルに収益を入力しました!"
Else
MsgBox 今日 & " が見つかりませんでした。"
End If
End Sub
3. なぜこの組み合わせが最強なの?
少ないコードで目的の場所を選択できるからです。
- 「日付」という看板を探す(Find)
- その看板から「右に〇個目」の空き地にデータを置く(Offset)
この流れさえマスターすれば、表のレイアウトが少し変わっても、プログラムを少し書き換えるだけで対応できるようになります。
4. 使うための準備
- 必要なExcelバージョン: すべてのバージョンで使えます。
- 前提として習得しておく関数:
- Find(前回の記事): 探し方を知っていることが大前提です。
- 座標の考え方: 「右はプラス」「左はマイナス」という感覚を掴んでおきましょう。


コメント