【脱・Excel迷子】「Offset」を知れば、データ整理が10倍ラクになる!あっちこっち移動も自由自在

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

Excelで表を作っているとき、「データが増えるたびに数式を直し続けて、もう嫌!」 と思ったことはありませんか?

今日は、そんな「セルの位置が変わると対応できない」という悩みを解決します。

【業務効率化】VBAの記事を見る

Offsetってなに?

一言で言うと、「基準の場所から、どれくらいズレた場所か」を指定する方法です。

例えば、友達に家の場所を教えるとき、「緯度〇〇、経度〇〇」とは言いませんよね?

「コンビニ(基準)から、2つ先の角(行)を、右に入ったところ(列)」と教えるはずです。

これがOffsetです。

Excel(VBA)での書き方:
Range(“基準のセル”).Offset(行の移動数, 列の移動数)

これだけです。「A1から下に1つ、右に1つ」なら Range(“A1”).Offset(1, 1) と書きます。

なぜこれが便利なの?

Excel作業で一番使うのは、「リストの最終行の『次の行』にデータを追加したいとき」です。

データが10件なら11行目、100件なら101行目…と、書き込む場所は毎回変わりますよね。これを「A11」と決め打ちしてしまうと、データが増えたときに上書きして大惨事になります。

そこでOffsetの出番です。

「一番下のデータを見つけて、その1つ下(Offset 1, 0)」を指定すれば、データが何万件あっても自動で空欄を見つけてくれます。

【コピペOK】VBAコード

では、実際に使えるコードを書いてみましょう。

これは「A列の一番下に、今日の日付と『確認済』という文字を自動で入れる」プログラムです。

Sub AddDataToNextRow()
    ' 使う変数を宣言
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1) ' 1枚目のシートを使います

    ' A列の最終行を探して、その「1つ下(Offset)」を指定する
    ' Cells(Rows.Count, 1).End(xlUp) が「A列の一番下のデータ」です
    With ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        .Value = Date           ' 1つ下のセルに今日の日付を入れる
        .Offset(0, 1).Value = "確認済" ' さらにその右隣(B列)に文字を入れる
    End With

    MsgBox "一番下の行に追加しました!"
End Sub

💡このコードのポイント

このコードのポイントは .Offset(1, 0) です。

「今の最終行から、1行下にズレてね」と指示しているおかげで、100行あろうが1000行あろうが、常に「次の空行」を正確に見つけられます。

これを手動でやると、スクロールして、セルをクリックして、入力して…と手間と時間がかかりますよね。

最後に

「座標」とか「引数」とか聞くと難しく感じますが、Offsetは「そこから〇歩進んで!」という道案内です。

この感覚が掴めれば、Excelを操るのがラクになっていくはずです。よければぜひ一度コピペして動かしてみてください!

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました