上萬列資料中夾雜大量空白列,手動刪除耗時耗力且易誤刪。Excel 內建 **定位條件 (Go To Special)**、 **自動篩選輔助欄**、 **VBA 巨集** 三大工具,配合 Ctrl+Shift+↓ 區塊選取技巧,能精準、批次、安全清除空白列,附動圖操作步驟與避坑指南。
A1:E10000,在 F1 輸入標題 IsBlankRow。F2 輸入公式:=IF(COUNTA(A2:E2)=0, TRUE, FALSE) (完全空白判斷)=IF(OR(A2="",B2=""), TRUE, FALSE) (關鍵欄 A/B 任一為空即判定)。F2 右下角填充控制桿,公式向下複製至最後一列。A1:F1 → Ctrl+Shift+L 開啟 **自動篩選**。F1 篩選箭頭 → 只勾選 TRUE → 確定。F1 篩選 → 清除篩選條件,輔助欄 F 可保留或刪除。Sub DeleteBlankRows_UsedRange()
Dim ws As Worksheet
Dim lastRow As Long, r As Long
Dim keyCols As Variant
Dim isBlank As Boolean
Set ws = ActiveSheet
' 定義關鍵欄位 (1=A, 2=B...),若要完全空白判斷則設為空陣列
keyCols = Array(1, 2) ' 例:A欄或B欄任一為空視為空白列
Application.ScreenUpdating = False
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For r = lastRow To 2 Step -1 ' 從底部往上刪,避免索引位移
isBlank = False
If UBound(keyCols) >= 0 Then
' 關鍵欄位判斷
Dim c As Variant
For Each c In keyCols
If ws.Cells(r, c).Value = "" Then
isBlank = True
Exit For
End If
Next c
Else
' 完全空白判斷 (UsedRange 內)
If Application.CountA(ws.Rows(r)) = 0 Then isBlank = True
End If
If isBlank Then ws.Rows(r).Delete
Next r
Application.ScreenUpdating = True
MsgBox "空白列清除完成!", vbInformation
End Sub
keyCols 陣列對應關鍵欄位 (如 Array(1) 只看 A 欄,Array() 完全空白)。DeleteBlankRows_UsedRange → 執行。| 方法 | 速度 | 精準度 | 適用資料特徵 | 風險 |
|---|---|---|---|---|
| 定位條件 | ⚡⚡⚡ 最快 | ⚠️ 低 (誤刪部分空白列) | 整列完全空白、無合併儲存格 | 高 (易誤刪) |
| 輔助欄+篩選 | ⚡⚡ 中等 | ✅✅ 高 (自訂空白定義) | 部分欄位空白、有合併儲存格、需人工確認 | 低 |
| VBA 巨集 | ⚡⚡⚡ 最快 (大量資料) | ✅✅✅ 最高 (程式邏輯控制) | 固定格式報表、定期自動化、巨量資料 (10萬列+) | 極低 (可加撤銷) |
COUNTA 會計算公式結果為 "" 的儲存格,**不視為空白**;COUNTBLANK 視為空白。請依需求選擇函數。Windows 使用紀錄自動清除術:關機清分頁檔、IE 暫存檔批次刪除、開機自動清 Temp 三大自動化方案
修改環境變數 TEMP/TMP 路徑,給 Windows XP 系統盤瘦身加速
WinXP 伺服器存取共享提示「指定的網路名稱不再可用」?檢查三大核心服務啟動狀態
讓 Windows XP 全自動維護系統:.inf + .bat 腳本實作磁碟重組/清理/關機
Windows XP 無密碼登入反而更安全?微軟官方說法解析
提升 Windows 系統記憶體效率的優化方法 (一):頁面檔案位置、大小與停用