Excel VBA | 「Cells × Range」実務テンプレ50パターン

VBA
スポンサーリンク

CellsRange は VBA の基礎ですが、組み合わせ次第で 柔軟な表操作・自動化 が可能です。
ここでは 実務でよく使う50パターン をまとめました。コピー&ペーストで即利用できます。


基本操作

  1. セル指定(行・列番号)
Cells(1, 1).Value = "A1"
VB
  1. 範囲指定(開始セル~終了セル)
Range(Cells(1, 1), Cells(5, 3)).Select
VB
  1. 単一セルを Range で指定
Range("B2").Value = "テスト"
VB
  1. 複数セルを Range で指定
Range("A1:C3").Interior.Color = vbYellow
VB
  1. セルの値取得
MsgBox Cells(2, 3).Value
VB

行・列操作

  1. 行全体選択
Cells(3, 1).EntireRow.Select
VB
  1. 列全体選択
Cells(1, 2).EntireColumn.Select
VB
  1. 最終行取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
VB
  1. 最終列取得
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
VB
  1. 行削除
Cells(5, 1).EntireRow.Delete
VB

自動範囲

  1. 表全体取得
Range("A1").CurrentRegion.Select
VB
  1. UsedRange取得
ActiveSheet.UsedRange.Select
VB
  1. 最終行+最終列で範囲指定
Range(Cells(1, 1), Cells(lastRow, lastCol)).Select
VB
  1. 列の最終行まで範囲指定
Range(Cells(1, 2), Cells(lastRow, 2)).Select
VB
  1. 行の最終列まで範囲指定
Range(Cells(3, 1), Cells(3, lastCol)).Select
VB

コピー&ペースト

  1. セルコピー
Cells(1, 1).Copy Cells(2, 1)
VB
  1. 範囲コピー
Range("A1:C3").Copy Range("E1")
VB
  1. 値のみ貼り付け
Range("A1:C3").Copy
Range("E1").PasteSpecial xlPasteValues
VB
  1. 書式のみ貼り付け
Range("A1:C3").Copy
Range("E1").PasteSpecial xlPasteFormats
VB
  1. 列ごとコピー
Cells(1, 2).EntireColumn.Copy Cells(1, 5).EntireColumn
VB

書式設定

  1. 背景色変更
Range("A1:C3").Interior.Color = vbGreen
VB
  1. 文字色変更
Range("A1:C3").Font.Color = vbRed
VB
  1. 太字設定
Range("A1:C3").Font.Bold = True
VB
  1. 罫線設定
Range("A1:C3").Borders.LineStyle = xlContinuous
VB
  1. 列幅自動調整
Range("A1:C3").EntireColumn.AutoFit
VB

値操作

  1. 数値入力
Cells(2, 2).Value = 100
VB
  1. 文字列入力
Cells(3, 3).Value = "Hello"
VB
  1. 数式入力
Cells(4, 4).Formula = "=SUM(A1:A3)"
VB
  1. 値クリア
Range("A1:C3").ClearContents
VB
  1. 書式クリア
Range("A1:C3").ClearFormats
VB

検索・置換

  1. 値検索
Range("A1:A100").Find("東京都").Select
VB
  1. 値置換
Range("A1:A100").Replace What:="東京", Replacement:="TOKYO"
VB
  1. 複数一致検索
Dim f As Range, firstAddr As String
Set f = Range("A1:A100").Find("大阪")
If Not f Is Nothing Then
    firstAddr = f.Address
    Do
        f.Interior.Color = vbYellow
        Set f = Range("A1:A100").FindNext(f)
    Loop While Not f Is Nothing And f.Address <> firstAddr
End If
VB
  1. 空白セル検索
Range("A1:A100").SpecialCells(xlCellTypeBlanks).Select
VB
  1. 数式セル検索
Range("A1:A100").SpecialCells(xlCellTypeFormulas).Select
VB

ループ処理

  1. 行ループ
For i = 1 To lastRow
    Cells(i, 1).Value = i
Next i
VB
  1. 列ループ
For j = 1 To lastCol
    Cells(1, j).Value = j
Next j
VB
  1. 範囲ループ
Dim r As Range
For Each r In Range("A1:C3")
    r.Value = "OK"
Next r
VB
  1. 条件付きループ
For i = 1 To lastRow
    If Cells(i, 2).Value = "東京都" Then
        Cells(i, 3).Value = "対象"
    End If
Next i
VB
  1. 二重ループ
For i = 1 To lastRow
    For j = 1 To lastCol
        Cells(i, j).Value = i * j
    Next j
Next i
VB

応用処理

  1. 表の右隣にコピー
Range("A1").CurrentRegion.Copy Range("A1").CurrentRegion.Offset(0, Range("A1").CurrentRegion.Columns.Count + 1)
VB
  1. 表の下にコピー
Range("A1").CurrentRegion.Copy Range("A1").CurrentRegion.Offset(Range("A1").CurrentRegion.Rows.Count + 1, 0)
VB
  1. 最終行に合計行追加
Cells(lastRow + 1, 1).Value = "合計"
Cells(lastRow + 1, 2).Formula = "=SUM(B1:B" & lastRow & ")"
VB
  1. 最終列に集計列追加
Cells(1, lastCol + 1).Value = "集計"
For i = 2 To lastRow
    Cells(i, lastCol + 1).Formula = "=SUM(A" & i & ":C" & i & ")"
Next i
VB
  1. フィルタ設定
Range("A1").CurrentRegion.AutoFilter Field:=2, Criteria1:="東京都"
VB
  1. 並べ替え
Range("A1").CurrentRegion.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes
VB
  1. 小計追加
Range("A1").CurrentRegion.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(3), Replace:=True
VB
  1. ピボット作成
ActiveWorkbook.PivotCaches.Create(xlDatabase, Range("A1").CurrentRegion).CreatePivotTable _
    TableDestination:="Sheet2!R1C1", TableName:="Pivot1"
VB
  1. 配列に読み込み
Dim data As Variant
data = Range(Cells(1, 1), Cells(lastRow, lastCol)).Value
VB
  1. 配列から一括書き戻し
Range(Cells(1, 1), Cells(lastRow, lastCol)).Value = data
VB

実務での使い分けポイント

  • セル単位 → Cells
  • 範囲単位 → Range
  • 表全体 → CurrentRegion
  • 動的範囲 → 最終行・最終列検出
  • **大量処理 → 配列+一括書
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました