Excel VBA | Cells を使った「実務応用 10 パターン」

VBA
スポンサーリンク

Cells を使った「実務応用 10 パターン」を、初心者でも真似できるように、コード+用途+図解イメージまでセットでまとめました。
どれも 実際の会社の Excel マクロで毎日のように使うもの です。


① 最終行を自動で取得する(A列)

最も頻出。
データ件数が変わる表を扱うとき必須。

Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
VB

📌 ポイント

  • Rows.Count は Excel の最終行(1048576)
  • 一番下から上に向かって値があるところまで戻る

📌 使い道

  • データ行を自動検出
  • 不定長のリスト処理

② B列に「OK」を最終行まで書き込む

Dim i As Long
Dim lastRow As Long

lastRow = Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lastRow
    Cells(i, 2).Value = "OK"
Next i
VB

📌 用途

  • チェック結果を書き込む
  • フラグ列を自動生成

③ 動的範囲を作って色塗り(A2:C最終行)

Cells × Range の最強コンビ。

Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row

Range(Cells(2, 1), Cells(lastRow, 3)).Interior.Color = vbYellow
VB

📌 用途

  • 処理対象範囲を動的に決定
  • 数千行でも自動で範囲が決まる

④ 行 × 列の2次元ループ処理

Dim r As Long, c As Long
For r = 1 To 10
    For c = 1 To 5
        Cells(r, c).Value = r & "," & c
    Next c
Next r
VB

📌 用途

  • 表形式データの一括処理
  • 配列のように Excel を扱える

⑤ 条件に合う行だけ背景色を変更

Dim i As Long, lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To lastRow
    If Cells(i, 3).Value = "NG" Then
        Cells(i, 3).Interior.Color = vbRed
    End If
Next i
VB

📌 用途

  • エラー箇所だけ色付け
  • NG なデータ行を強調表示

⑥ 空白セルだけ色を付ける(全列対応)

Dim r As Long, c As Long, lastRow As Long, lastCol As Long

lastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column

For r = 1 To lastRow
    For c = 1 To lastCol
        If Cells(r, c).Value = "" Then
            Cells(r, c).Interior.Color = vbYellow
        End If
    Next c
Next r
VB

📌 用途

  • データの空白チェック
  • 全列・全行を「網羅的に」チェック

⑦ 列を動的に判定しながら値を探す(Findなし)

Dim r As Long, lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row

For r = 1 To lastRow
    If Cells(r, 5).Value = "完了" Then
        MsgBox "完了行:" & r
    End If
Next r
VB

📌 用途

  • 特定値の検索
  • Find より安全で読みやすい(初心者向け)

⑧ 縦横に見出しを書き込むテンプレ

Dim i As Long, j As Long

For i = 1 To 5
    Cells(i, 1).Value = "行" & i
Next i

For j = 1 To 5
    Cells(1, j).Value = "列" & j
Next j
VB

📌 用途

  • テンプレートの自動生成
  • レポート自動作成

⑨ ユーザーの入力行を探して追記

1行目にヘッダー、2行目以降にデータが続く表で
「空いている最初の行」に追記する例。

Dim addRow As Long
addRow = Cells(Rows.Count, 1).End(xlUp).Row + 1

Cells(addRow, 1).Value = "新規ID"
Cells(addRow, 2).Value = "新規データ"
VB

📌 用途

  • ログの追記
  • 新規行追加(会社で一番よく使う)

⑩ 1行丸ごとクリア(可変行)

Dim targetRow As Long
targetRow = 10 ' 例:10行目

Cells(targetRow, 1).EntireRow.ClearContents
VB

📌 用途

  • 特定行をまとめてリセット
  • 何列あっても1行を一発で消せる

おまけ:Cells が本領発揮する場面

プログラマ視点でいうと…

行番号・列番号を変数として扱える

Cells(i, j) が圧倒的に強い

動的範囲

Range(Cells(~), Cells(~)) が鉄板

最終行・最終列の自動検出が簡単

→ 実務では 100%使う


まとめ:実務では “Range と Cells の合わせ技” が最強

処理RangeCellsベスト
固定セルRange
動的セルCells
動的範囲Range + Cells
表データ処理Cells
テンプレ生成どちらでも

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました