📘 Excel逆引き事典

【VBA】可視セル(フィルタ結果)を完全一致で配列に格納する方法

日々の業務で大量のデータから特定の情報を抽出するのは大変な作業です。特にフィルタリング後の結果だけを取り出す場合、手作業では時間がかかります。この記事では、VBAを使用してフィルター後の可視セルを完全一致で配列に格納する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub FilteredCellsToArray()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' フィルタリング後の可視セル範囲を取得
    Dim visibleRange As Range
    Set visibleRange = ws.UsedRange.SpecialCells(xlCellTypeVisible)
    
    ' 配列の初期化
    Dim arr() As Variant
    ReDim arr(1 To visibleRange.Rows.Count, 1 To visibleRange.Columns.Count)
    
    ' フィルタリング後の可視セルを配列に格納
    Dim i As Long, j As Long
    For i = 1 To visibleRange.Rows.Count
        For j = 1 To visibleRange.Columns.Count
            arr(i, j) = visibleRange.Cells(i, j).Value
        Next j
    Next i
    
    ' 配列を表示(デバッグ用)
    Debug.Print "配列の内容:"
    Dim k As Long, l As Long
    For k = LBound(arr, 1) To UBound(arr, 1)
        For l = LBound(arr, 2) To UBound(arr, 2)
            Debug.Print arr(k, l);
        Next l
        Debug.Print
    Next k
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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