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