如果列H包含以下任何值,则删除行-VBA
如果H列包含以下任何值,我想删除一行:如果列H包含以下任何值,则删除行-VBA,vba,excel,Vba,Excel,如果H列包含以下任何值,我想删除一行: 1) % 2) Resistor 3) Capacitor 4) MCKT 5) Connector 6) anything else I may want to add to this list... 在谷歌上找到并编辑了这个——效果很好——不确定是否有更有效的方法 Sub DeleteRows() lastrow = Cells.SpecialCells(xlCellTypeLastCell).Row readrow = 1 For n = 1 to
1) %
2) Resistor
3) Capacitor
4) MCKT
5) Connector
6) anything else I may want to add to this list...
在谷歌上找到并编辑了这个——效果很好——不确定是否有更有效的方法
Sub DeleteRows()
lastrow = Cells.SpecialCells(xlCellTypeLastCell).Row
readrow = 1
For n = 1 to lastrow
If Range("H" & ReadRow).Value = "%" Or _
Range("H" & ReadRow).Value = "Resistor" Or _
Range("H" & ReadRow).Value = "Capacitor" Or _
Range("H" & ReadRow).Value = "MCKT" Or _
Range("H" & ReadRow).Value = "Connector" Then
Range("H" & ReadRow).EntireRow.Delete
Else
readrow = readrow + 1
End If
Next
End Sub
有更有效的方法,但使用此方法: 向后循环。 将ReadRow更改为n,没有意义使用两个变量: 代码: 另一种方法是使用selectcase 它使添加到列表中变得更容易。这非常有效
Option Explicit
Option Compare Text
Sub Delete_Rows()
Dim LastRow As Long, ReadRow As Long, n As Long
With ThisWorkbook.Sheets("Sheet1")
LastRow = .Cells(.Rows.Count, "H").End(xlUp).row
End With
ReadRow = 1
For n = 1 To LastRow
If Range("H" & ReadRow).Value Like "*%*" = True Or _
Range("H" & ReadRow).Value Like "*Resistor*" = True Or _
Range("H" & ReadRow).Value Like "*Transistor*" = True Or _
Range("H" & ReadRow).Value Like "*Micro*" = True Then
Range("H" & ReadRow).EntireRow.Delete
Else
ReadRow = ReadRow + 1
End If
Next
End Sub
堆栈溢出不是免费的代码编写服务。你尝试过什么?如果我是你,我会学习如何使用循环步骤1的目的是什么?你不想让它从第一排排到最后一排…而不是最后一排-1吗@Scott CranerDisregard我之前的评论-我知道你在做什么-从最后一排向上到第一排向下的目的是什么@斯科特Craner@CC268当你删除一行,比如说第10行,那么原来的第11行变成了第10行,当它迭代时,n从10变为11,原来的第11行和现在的第10行被跳过。通过后退,它没有跳过行的问题。尝试了两种代码-都不起作用-我认为搜索条件可能不太正确?如果它在单元格中的任何位置找到这些单词,我只需要它删除该行。我不希望它区分大小写。例如,在某些电池中,它可能是电阻器,另一个可能是电阻器。也许我会尝试在结尾添加一个星号,看看这是否有助于@Scott CranerAlso,因为它与您的rown有问题。删除-表示未定义子项或函数
Sub DeleteRows()
Dim Lastrow as long, n as long
lastrow = Cells.SpecialCells(xlCellTypeLastCell).Row
For n = lastrow to 1 Step -1
Select Case Range("H" & n).Value
Case "%","Resistor","Capacitor","MCKT","Connector"
Rows(n).Delete
End Select
Next
End Sub
Option Explicit
Option Compare Text
Sub Delete_Rows()
Dim LastRow As Long, ReadRow As Long, n As Long
With ThisWorkbook.Sheets("Sheet1")
LastRow = .Cells(.Rows.Count, "H").End(xlUp).row
End With
ReadRow = 1
For n = 1 To LastRow
If Range("H" & ReadRow).Value Like "*%*" = True Or _
Range("H" & ReadRow).Value Like "*Resistor*" = True Or _
Range("H" & ReadRow).Value Like "*Transistor*" = True Or _
Range("H" & ReadRow).Value Like "*Micro*" = True Then
Range("H" & ReadRow).EntireRow.Delete
Else
ReadRow = ReadRow + 1
End If
Next
End Sub