簡體   English   中英

從Excel工作表中刪除空白行

[英]Remove Blank Rows from an Excel Worksheet

我做了一些搜索,但似乎找不到快速的方法來擺脫工作表中的所有空白行。 我不想花很多時間。 有這種方法嗎?

我嘗試了一些不太出色的方法,包括過濾所有列中的空白,然后刪除屏幕上的內容。 也許Excel中有一個函數我在這里不見了?

我正在尋找諸如UsedRange.RemoveDuplicates()函數之類的東西,這些東西在一兩秒鍾內做了很多工作。

這是刪除活動工作表上所有空白行的兩種方法...

1個VBA 這種方法比遍歷行要快得多:

cells.RowDifferences(cells(rows.Count,columns.Count)).rows.Hidden=true
cells.SpecialCells(xlCellTypeVisible).EntireRow.Delete
cells.Rows.Hidden=false

2鍵盤 這種方法只是撤消列表中的三個步驟,因此可以輕松撤消/追溯。

在此處輸入圖片說明

步驟1.選擇數據單元。 單擊左上角的標題以選擇所有單元格,然后按Shift+Tab Ctrl+\\

步驟2.隱藏並刪除剩余的行。 Ctrl + 9 Ctrl + A Alt+; Ctrl + -

步驟3.取消隱藏所選行,然后選擇第一個單元格。 按下: Ctrl + Shift + 9 Ctrl + Home

之前

在此處輸入圖片說明

在此處輸入圖片說明

如果需要功能在excel中快速運行,則應設置全局Excel應用程序變量,例如“ Visible = false”,“ ScreenUpdating = false”。 過濾空白並刪除它們應該是最快的方法,盡管我會手動創建要刪除的行的列表,然后在一次調用中將其刪除

RowsToDelete = "2:2;4:4;8:8";
Range = Sheet.Range()
Range.Delete()

對於非常大的數據集(100K +行)我總是發現其大量更快地通過空格進行排序然后刪除過濾和刪除大量分離線。 如果空白行分布在整個文件中,則速度可以提高5到10倍。

遍歷每一行需要花費很多時間,但這僅是因為FOR循環開銷。 實際上,主要操作WorksheetFunction.CountA和Range.EntireRow.Delete不需要很長時間。

我發現最好的解決方案是從10萬行的大塊開始,刪除所有沒有值的行,然后以10的冪次向下移動,直到處於單行級別。

無論您是嘗試刪除數據周圍多余的空格還是在主數據范圍內零星刪除單個行,這都非常快。

Public Sub removeblankrows()
Dim ws As Worksheet: Set ws = ActiveSheet

With WorksheetFunction
    Dim pow As Long

    For pow = 6 To 0 Step -1

        Dim chunkSize As Long: chunkSize = 10 ^ pow

        Dim chunks As Long: chunks = (ws.UsedRange.Rows.Count \ chunkSize) + 1

        Dim c As Long
        For c = chunks To 1 Step -1
            Dim last As Long, first As Long

            last = .Min(c * chunkSize, ws.Rows.Count)
            first = .Max(1, (c - 1) * chunkSize)

            Dim c1 As Range, c2 As Range, rng As Range
            Set c1 = ws.Cells(first, 1)
            Set c2 = ws.Cells(last, ws.UsedRange.Columns.Count)

            Set rng = ws.Range(c1, c2)

            If .CountA(rng) = 0 Then rng.EntireRow.Delete

        Next c

    Next pow
End With

結束子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM