如何根据单元格值删除行

我有一个工作表,我需要删除基于单元格值的行..

要检查的单元格在A列中

如果单元格包含“ – ”..删除行

我找不到办法做到这一点..我打开工作簿,将所有内容复制到另一个工作簿,然后删除整个行和列,但有特定的行必须根据单元格值被删除。

需要帮助在这里。

UPDATE

我有数据样本

样品

屏幕截图非常有帮助 – 下面的代码将完成这项工作(假设数据位于A列开始A1):

 Sub RemoveRows() Dim i As Long i = 1 Do While i <= ThisWorkbook.ActiveSheet.Range("A1").CurrentRegion.Rows.Count If InStr(1, ThisWorkbook.ActiveSheet.Cells(i, 1).Text, "-", vbTextCompare) > 0 Then ThisWorkbook.ActiveSheet.Cells(i, 1).EntireRow.Delete Else i = i + 1 End If Loop End Sub 

示例文件是共享的: https : //www.dropbox.com/s/2vhq6vw7ov7ssya/RemoweDashRows.xlsm

最简单的方法是使用filter 。

您可以筛选列A中没有“ – ”的所有单元格,并复制/粘贴,或者(我更喜欢的方法)filter,以便所有单元格具有“ – ”,然后select全部和删除 – 一次你删除filter,你剩下你所需要的。

希望这可以帮助。

你可以在一个新的列中复制下面的公式

 =IF(ISNUMBER(FIND("-",A1)),1,0) 

…然后在该列上sorting,突出显示值为1的所有行并将其删除。

如果你的文件不是太大,你总是可以按照具有“ – ”的列进行sorting,只要突出显示并删除即可。 然后重新回到你想要的东西。

你可以遍历你的范围中的每个单元格,并使用InStr函数来检查一个单元格是否包含一个string,在你的情况下; 连字符。

 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 

这是自动filtermacros,你可以基于一个function:

 Selection.AutoFilter ActiveSheet.Range("$A$1:$A$10").AutoFilter Field:=1, Criteria1:="=*-*", Operator:=xlAnd Selection.AutoFilter 

我使用这个自动筛选function来删除匹配的行:

 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", "=*-*" 

这为我节省了很多工作。 祝你好运!

如果你想删除基于某些特定单元格值的行。 假设我们有一个包含10000行的文件和一个NULL值的字段。 并根据该空值想要删除所有这些行和logging。

这里有一些简单的提示。 首先打开“查找replace”对话框,在“replace”选项卡上,使所有包含空值的单元格都为空。 然后按F5并select空白选项,现在右键单击活动工作表,然后select删除,然后select整个行。

它将根据包含字NULL的单元格值删除所有这些行。