📘 Excel逆引き事典

【VBA】空白セルを配列を使って高速に別ブックとして保存する方法

日々の業務では大量のデータから特定の情報を素早く取り出すことが求められます。特に空白セルだけを抽出し、別のファイルに保存したい場合、手作業で行うと時間がかかります。そこでこの記事では、VBAを使用して高速かつ効率的に空白セルだけを別ブックとして保存する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub SaveBlankCellsAsNewWorkbook()
    Dim ws As Worksheet
    Dim lastRow As Long, i As Long
    Dim arr() As Variant
    Dim wbNew As Workbook
    
    ' シートを選択(必要に応じて変更)
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 画面更新を停止して処理速度を向上
    Application.ScreenUpdating = False
    
    ' 最終行の取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 配列の初期化(必要な範囲のみ)
    ReDim arr(1 To WorksheetFunction.CountBlank(ws.Range("A1:A" & lastRow)), 1 To 2)
    i = 1
    
    ' 空白セルを配列に格納
    For Each cell In ws.Range("A1:A" & lastRow)
        If IsEmpty(cell.Value) Then
            arr(i, 1) = cell.Row
            arr(i, 2) = ""
            i = i + 1
        End If
    Next cell
    
    ' 新しいワークブックの作成
    Set wbNew = Workbooks.Add(xlWBATWorksheet)
    wbNew.Sheets(1).Range("A1").Resize(UBound(arr), 2) = arr
    
    ' ファイル名を指定して保存(必要に応じて変更)
    wbNew.SaveAs ThisWorkbook.Path & "\BlankCells.xlsx"
    
    ' 必要な処理が終了したら画面更新を再開
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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