【VBA】セルの値が”1200以上”の場合に空白にする方法|条件分岐とループの活用

使用環境

  • OS:Windows 10 Pro(バージョン:20H2)
  • ソフト:Microsoft Excel VBA

経緯

データを抽出する際に、不要な値(1200以上)が含まれていたため、これまで手動で削除していました。
作業の効率化を図るため、VBAで1200以上のセルを自動で空白にする処理
を学びました。

解決方法:分岐とループを組み合わせる

対象は、I4セルから下方向に連続するデータです。
以下のようにプログラムを書きました。

コード例

Sub 1200以上を空白にする()

    Dim r As Long
    Dim i As Long

    r = Range("I4").End(xlDown).Row
    i = 4

    For i = i To r
        If Cells(i, 9).Value > 1200 Then
            Cells(i, 9).Value = ""
        End If
    Next i

End Sub

コード解説

  • 1行目rに、I4セルから下方向の最終行番号を代入しています。
  • 2行目:カウンター変数iに「4」を設定します。これはI4セルが開始地点であるためです。
  • 3行目Forループを開始し、4行目から最終行まで1行ずつ処理します。
  • 4行目If文で、I列(9列目)の値が1200より大きいかを判定します。
  • 5行目:1200以上であれば、そのセルの値を空白("")にします。
  • 6行目If文終了。
  • 7行目:次の行へ進みます。

この処理が、最終行(r行目)まで繰り返されます。

失敗談と気づき

最初はRange()を使って処理しようと試みましたが、うまくいきませんでした。
Rangeは範囲全体を一括で操作
するには便利ですが、個別に1セルずつ条件判定するにはやや扱いにくい場面もあります。

一方、**Cells(row, column)**を使うことで、行・列を数字で直接指定できるため、今回のようなループ処理との相性が良いことを改めて実感しました。

Rangeでも工夫すればできる方法はありますので、今後さらに学んでいきたいと思います。

まとめ

VBAで特定の条件を満たすセルを空白にするには、

  • Cells(row, column)を使ってセルを指定する
  • If文とForループを組み合わせる

のが基本的なアプローチとなります。

作業を手動で行うより、VBAを使うことで大幅に時間を短縮できるので、積極的に活用していきたいと思います。

ここまでお読みいただき、誠にありがとうございました。

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

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。