📘 Excel逆引き事典

【VBA】可視セル(フィルタ結果)を配列を使って高速に値をクリアする方法

日々の業務では、大量のデータから特定の項目を抽出し、その結果のみを処理することが多いです。しかし、フィルタリングした後の可視セルだけを手動でクリアするのは時間がかかります。この記事では、VBAを使用してフィルタリングされたデータの可視セルを高速にクリアする方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub ClearVisibleCells()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("シート名")
    Application.ScreenUpdating = False
    
    ' フィルタリングされた範囲の最後の行を取得
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' 可視セルの値を配列に格納
    Dim visibleRange As Range
    Set visibleRange = ws.Range("A2:A" & lastRow)
    Dim values() As Variant
    values = visibleRange.SpecialCells(xlCellTypeVisible).Value
    
    ' 配列をクリア
    For i = 1 To UBound(values, 1)
        values(i, 1) = ""
    Next i
    
    ' クリアした値を元のセルに書き戻す
    visibleRange.SpecialCells(xlCellTypeVisible).Value = values
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。