Vba 如何根据单元格值删除行
我有一个工作表,我需要根据单元格值删除行 要检查的单元格位于A列中 如果单元格包含“-”。。删除行 我找不到这样做的方法。。我打开一个工作簿,将所有内容复制到另一个工作簿,然后删除整行和整列,但有些特定行必须根据单元格值删除 这里需要帮助 更新 我拥有的数据样本Vba 如何根据单元格值删除行,vba,excel,Vba,Excel,我有一个工作表,我需要根据单元格值删除行 要检查的单元格位于A列中 如果单元格包含“-”。。删除行 我找不到这样做的方法。。我打开一个工作簿,将所有内容复制到另一个工作簿,然后删除整行和整列,但有些特定行必须根据单元格值删除 这里需要帮助 更新 我拥有的数据样本 最简单的方法是使用 您可以筛选列A中没有“-”和“复制/粘贴”的任何单元格,或者(我更喜欢的方法)筛选所有有“-”的单元格,然后选择“全部”和“删除”-删除该筛选器后,您就可以得到所需的内容 希望这能有所帮助。你可以在一个新的专栏中复制
最简单的方法是使用 您可以筛选列A中没有“-”和“复制/粘贴”的任何单元格,或者(我更喜欢的方法)筛选所有有“-”的单元格,然后选择“全部”和“删除”-删除该筛选器后,您就可以得到所需的内容
希望这能有所帮助。你可以在一个新的专栏中复制如下公式
=IF(ISNUMBER(FIND("-",A1)),1,0)
。。。然后对该列进行排序,突出显示值为1的所有行并将其删除。您可以循环遍历范围内的每个单元格,并使用
InStr
函数检查单元格是否包含字符串(在您的情况下);连字符
Sub DeleteRowsWithHyphen()
Dim rng As Range
For Each rng In Range("A2:A10") 'Range of values to loop through
If InStr(1, rng.Value, "-") > 0 Then 'InStr returns an integer of the position, if above 0 - It contains the string
rng.Delete
End If
Next rng
End Sub
屏幕截图非常有用-下面的代码将完成这项工作(假设数据位于A1开头的A列):
Sub-remoterows()
我想我会坚持多久
i=1
那我就去做吧
ThisWorkbook.ActiveSheet.Cells(i,1).EntireRow.Delete
其他的
i=i+1
如果结束
环
端接头
示例文件已共享:如果要根据某些特定单元格值删除行。 假设我们有一个包含10000行的文件和一个值为NULL的字段。 并基于该空值删除所有这些行和记录 这里有一些简单的提示。 首先打开“查找替换”对话框,在“替换”选项卡上,将所有包含空值的单元格设置为空。 然后按F5并选择空白选项,现在右键单击活动表单,然后选择删除,然后选择整行。< /P>
它将根据包含单词NULL的单元格值删除所有这些行。这是一个自动筛选宏,您可以根据该宏创建函数:
Selection.AutoFilter
ActiveSheet.Range("$A$1:$A$10").AutoFilter Field:=1, Criteria1:="=*-*", Operator:=xlAnd
Selection.AutoFilter
我使用此自动筛选功能删除匹配行:
Public Sub FindDelete(sCol As String, vSearch As Variant)
'Simple find and Delete
Dim lLastRow As Integer
Dim rng As Range
Dim rngDelete As Range
Range(sCol & 1).Select
[2:2].Insert
Range(sCol & 2) = "temp"
With ActiveSheet
.usedrange
lLastRow = .Cells.SpecialCells(xlCellTypeLastCell).Row
Set rng = Range(sCol & 2, Cells(lLastRow, sCol))
rng.AutoFilter Field:=1, Criteria1:=vSearch, Operator:=xlAnd
Set rngDelete = rng.SpecialCells(xlCellTypeVisible)
rng.AutoFilter
rngDelete.EntireRow.Delete
.usedrange
End With
End Sub
可以这样说:
call FindDelete "A", "=*-*"
这帮我省了很多工作。祝你好运 如果您的文件不是太大,您可以始终按包含的列进行排序-一旦它们都在一起,只需高亮显示并删除即可。然后重新排序回您想要的内容。请澄清:您需要检查A中的单元格是否为
-
的整个单元格内容,或者检查任何具有-
字符的单元格,例如-abc
?任何包含-
的单元格。。实际上,该列中的所有单元格都是整数,但有些单元格的整数之间有一个-
。请共享一个示例屏幕截图,但至少有一个矛盾,因为如果“某些单元格的整数之间有一个-”表示它们的内容是字符串。@PeterL。我已经添加了一个数据示例的屏幕截图,但不起作用。。我又试了一次。。它会删除所有行!!因为A列以外的某些单元格中包含-
:(我来这里寻找的解决方案不一定是VBA或代码,对我来说,过滤器和条件格式的组合很好,格式到高光过滤器导出/删除此代码您不需要指定范围-它将检查连续范围内的所有行。但是,我在另一列的所有单元格中都有-
。。这行吗a全部删除???@sikas不,只需在我的示例文件B列中添加数据并运行测试。我已经应用到我的生产文件中。它工作得很好!!谢谢!如果我需要删除所有工作表中的第二行,我可以知道代码吗?我将如何在C#中这样做?很简单,我喜欢它。
call FindDelete "A", "=*-*"