Vba 如何根据单元格值删除行

Vba 如何根据单元格值删除行,vba,excel,Vba,Excel,我有一个工作表,我需要根据单元格值删除行 要检查的单元格位于A列中 如果单元格包含“-”。。删除行 我找不到这样做的方法。。我打开一个工作簿,将所有内容复制到另一个工作簿,然后删除整行和整列,但有些特定行必须根据单元格值删除 这里需要帮助 更新 我拥有的数据样本 最简单的方法是使用 您可以筛选列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", "=*-*"