Excel VBA | 中級・上級 VBA 総合セット(100問)

VBA
スポンサーリンク

VBA Range・セル操作 練習問題(10問)+ 解答解説

ここでは Range・セル操作 をテーマにした中級~上級者向けの演習問題を 10 問用意し、模範コードと解説を添えています。
「セル範囲の読み書き」「条件付き処理」「書式設定」など、実務で頻出するテクニックを整理しました。


Q1. CurrentRegion を配列に読み込み、数値をすべて 10% 増加させて書き戻せ

解答例

Sub IncreaseValues()
    Dim arr As Variant
    Dim i As Long, j As Long
    
    arr = Range("A1").CurrentRegion.Value
    
    For i = 2 To UBound(arr, 1)   '1行目は見出しと仮定
        For j = 1 To UBound(arr, 2)
            If IsNumeric(arr(i, j)) Then arr(i, j) = arr(i, j) * 1.1
        Next j
    Next i
    
    Range("A1").CurrentRegion.Value = arr
End Sub
VB

解説:
表全体を配列に読み込んで処理 → 一括書き戻しで高速化。


Q2. 特定列の空白セルを黄色に塗れ

解答例

Sub HighlightBlanks()
    Dim r As Range
    For Each r In Range("B2:B200")
        If r.Value = "" Then r.Interior.Color = vbYellow
    Next r
End Sub
VB

解説:
For Each でセルを順番に処理。空白判定は Value = ""


Q3. 数値が 10000 以上のセルを太字にせよ

解答例

Sub BoldHighValues()
    Dim r As Range
    For Each r In Range("C2:C50")
        If IsNumeric(r.Value) And r.Value >= 10000 Then
            r.Font.Bold = True
        End If
    Next r
End Sub
VB

解説:
条件付きで書式を変更する典型例。


Q4. セル範囲の合計を計算して指定セルに出力せよ

解答例

Sub SumRange()
    Dim total As Double
    total = Application.WorksheetFunction.Sum(Range("D2:D100"))
    Range("D101").Value = total
End Sub
VB

解説:
WorksheetFunction.Sum を使うと高速に合計を計算できる。


Q5. セル範囲の最大値を求めよ

解答例

Sub MaxValue()
    Dim maxVal As Double
    maxVal = Application.WorksheetFunction.Max(Range("E2:E50"))
    MsgBox "最大値は " & maxVal
End Sub
VB

解説:
Excel関数を VBA から呼び出せる。


Q6. セル範囲をクリアせよ(値と書式)

解答例

Sub ClearRange()
    Range("F2:F100").Clear
End Sub
VB

解説:
.Clear は値・書式・コメントをすべて削除。値だけなら .ClearContents


Q7. セル範囲をコピーして別の場所へ貼り付けよ

解答例

Sub CopyPaste()
    Range("A2:C20").Copy Destination:=Range("E2")
End Sub
VB

解説:
Copy Destination を使うと一行でコピー&貼り付けが可能。


Q8. セル範囲をソートせよ

解答例

Sub SortRange()
    Range("A1:C20").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes
End Sub
VB

解説:
Sort メソッドで範囲を並べ替え。Key1 に基準列を指定。


Q9. セル範囲をフィルタリングして表示せよ

解答例

Sub FilterRange()
    Range("A1:C100").AutoFilter Field:=2, Criteria1:=">=1000"
End Sub
VB

解説:
AutoFilter を使うと条件付きで表示を絞り込める。


Q10. セル範囲をループして「文字列の長さ」を出力せよ

解答例

Sub StringLength()
    Dim r As Range
    For Each r In Range("A2:A20")
        If r.Value <> "" Then
            Debug.Print r.Value & " → " & Len(r.Value)
        End If
    Next r
End Sub
VB

解説:
Len 関数で文字列の長さを取得。入力チェックに応用可能。


✅ 総まとめ

  • Range.Value → 配列化 → 高速処理
  • For Each → 条件付き処理や書式変更
  • WorksheetFunction → 合計・最大値などの計算
  • Range メソッド → Clear, Copy, Sort, AutoFilter など便利機能
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました