我有一张工作表,我需要根据单元格值删除行。
要检查的单元格在A列中。
如果单元格包含“ - ”..删除行
我找不到这样做的方法..我打开一个工作簿,将所有内容复制到另一个工作簿,然后删除整个行和列,但是有一些特定的行必须根据单元格值删除。< / p>
需要帮助。
的更新 的
我拥有的数据样本
答案 0 :(得分:18)
最简单的方法是使用filter。
您可以过滤A列中没有“ - ”的任何单元格,复制/粘贴,或者(我更优选的方法)过滤所有具有“ - ”的单元格,然后选择全部删除 - 删除过滤器后,您将得到所需的内容。
希望这有帮助。
答案 1 :(得分:13)
屏幕截图非常有用 - 以下代码将完成这项工作(假设数据位于A1列的A列中):
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
答案 2 :(得分:9)
您可以在新列中复制如下公式......
=IF(ISNUMBER(FIND("-",A1)),1,0)
...然后对该列进行排序,突出显示值为1的所有行并删除它们。
答案 3 :(得分:4)
如果要根据某些特定的单元格值删除行。 假设我们有一个包含10000行的文件和一个值为NULL的字段。 并基于该空值想要删除所有这些行和记录。
这里有一些简单的提示。 首先打开“查找替换”对话框,然后在“替换”选项卡上,将所有包含NULL值的单元格设置为空白。 然后按F5并选择空白选项,现在右键单击活动工作表,然后选择删除,然后选择整行。
它将根据包含单词NULL的单元格值删除所有这些行。
答案 4 :(得分:4)
如果您提交的文件不是太大,您可以随时按 - 列进行排序,一旦他们全部一起突出显示并删除。然后重新排序回到你想要的东西。
答案 5 :(得分: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
答案 6 :(得分:1)
这是autofilter宏,你可以将函数作为基础:
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", "=*-*"
它为我节省了大量的工作。祝你好运!