[英]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.