簡體   English   中英

如何根據單元格值在Excel中刪除行?

[英]How to remove a row in Excel based on cell value?

我有一個Excel,我想根據特定的單元格值刪除一些行,但是Excel非常龐大,它大約有75000行。 我嘗試編寫一個正常的函數來循環工作表,檢查單元格值,如果匹配則刪除行,但是這花費了很長時間。 我等了30分鍾,程序仍在運行,有人可以建議我如何實現這一目標。

以下是代碼。

Private Sub CommandButton1_Click()
    Dim i As Integer

        For i = Range("D1").End(xlDown).Row To 1 Step -1
                If Cells(i, 4) = 7 Then
                    Rows(i).Delete Shift:=xlUp
                End If
        Next i
End Sub

我針對具有50行的小型Excel文件測試了此代碼,並且工作正常。 但是當我嘗試使用excel時,我想嘗試一下,這讓我等了30分鍾,無法完成。

如果要刪除D列的值為7並且D列中沒有空格的行,請運行:

Sub Tachyon()
    Dim rD As Range
    Set rD = Intersect(Range("D:D"), ActiveSheet.UsedRange)
    rD.Replace "7", ""
    rD.Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

編輯1

請勿使用此宏

測試表明,它不僅刪除了D列中包含7的行,還刪除了其單元格包含77或777的行。它還破壞了17或71之類的值。我們需要更好的東西。

編輯2

此版本已解決問題:

Sub Tachyon2()
    Dim rD As Range
    Set rD = Intersect(Range("D:D"), ActiveSheet.UsedRange)
    rD.Replace What:="7", Replacement:="", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    rD.Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

暫無
暫無

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

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