Answers:
您最简单的方法是简单地对您想要的值进行排序并删除该值之前的所有行,然后删除它之后的所有行,这将只留下具有该行的行。
当然,这是Excel,你可以稍微改变一点点的工作。例如,在方便的位置插入“帮助”列(例如,在您感兴趣的列旁边),并快速为值“”“编写IF测试,以便找不到它。然后使用公式复制或填充整个列(每个测试该行的单元格),对辅助列进行排序,并且要删除的所有行都在一起,而不是在两个束中。在您的环境中,您的各种选项似乎更容易,您可能会选择偏好。
如果您需要宏来执行此操作,请遵循相同的概念。在宏中,只需测试您感兴趣的列中的第一个单元格的值,如果未找到,则将宏删除该行,然后循环直到到达数据末尾。如果该列中没有单元格可以为空,则可以测试空白并在找到时退出。但是......如果一个细胞可能是空的,你将需要尝试别的东西。根据你的桌子和其他细胞的特征,各种各样的东西都可以工作,但你也可以在大脑选择的最后一个可能的细胞上启动宏,并向上工作(包括每个行数的测试)时间,所以你可以停在第2行,我有你的标题,而不是删除我们的标题行,然后永久循环第一行)。
或者将两者结合起来。对该列上的数据进行排序,在宏中查找所需值的第一个出现,删除该值之上的所有DATA行,然后测试直到第一次失败,然后删除所有行。
这么多方面。我的方法将是我自己工作的第一个方法。对于我要给别人使用的电子表格,我会通过尝试为他自动化来修改它。或者......取决于用户,知识渊博与新手,老板与来自清洁工的吉米。那种事。
感谢大家的帮助。我最后做了以下事情:
对于大型数据集,此过程相对较快。
我想建议一个MACRO,它是从所有表中删除所有行的最好和最快的方法,在特定的B列中不包含文本TOTAL。
Sub Delete_Rows()
Dim rng As Range, cell As Range, del As Range
Dim sht As Worksheet
For X = 1 To 10
Set sht = Sheets(X)
Set del = Nothing
Set rng = Intersect(sht.Range("B1:B9"), sht.UsedRange)
For Each cell In rng.Cells
If (cell.Value) <> "Total" Then
If del Is Nothing Then
Set del = cell
Else
Set del = Union(del, cell)
End If
End If
Next cell
If Not del Is Nothing Then del.EntireRow.Delete
Next X
End Sub
这个怎么运作:
Alt+F11
下打开VB Editor
然后Copy & Paste
将此代码作为标准模块。B1:B9
中的所有表,从那里你正在试图删除行。注意:
For X = 1 to 10
表示,宏将搜索TOTAL
中10 Worksheets
,这是可编辑的。
您也可以根据需要调整/更改搜索范围B1:B9
和字符串Total
。