答案1
最简单的方法是简单地对所需的值进行排序,然后删除该值之前的所有行,然后删除该值之后的所有行,只留下与该值完全相同的行。
当然,这是 Excel,您可以稍微多做一点工作,以略有不同的方式完成每一步。例如,在方便的地方插入一个“辅助”列(例如,就在您感兴趣的列旁边),然后快速编写一个 IF 测试,以“”表示未找到该值。然后复制或填充整个列和公式(每个测试该行的单元格),对辅助列进行排序,这样您要删除的所有行都会在一起,而不是分成两堆。根据您的情况和偏好,您可能会选择哪种选择更容易。
如果您需要宏来执行此操作,请遵循相同的概念。在宏中,只需测试您感兴趣的列中的第一个单元格的值,如果未找到,则让宏删除该行,然后循环直到到达数据末尾。如果该列中没有单元格可以为空白,则可以测试空白并在找到时退出。但是...如果单元格可以为空,则需要尝试其他方法。根据您的表格和其他单元格的特征,各种各样的方法都可以奏效,但您也可以只在大脑选择的最后一个可能的单元格上启动宏,然后向上工作(包括每次测试行号,这样您就可以停在第 2 行,如果您有标题,而不是删除标题行然后永久循环第一行)。
或者将两者结合起来。在宏中对该列上的数据进行排序,查找所需值的第一次出现,删除该值上方的所有数据行,然后测试直到第一次失败,然后删除之后的所有行。
方法有很多。我的方法将是我工作中的第一个。对于我提供给别人使用的电子表格,我会尝试通过自动化来修改它。或者...取决于用户,知识渊博的人还是新手,老板还是清洁工吉米。诸如此类。
答案2
谢谢大家的帮助。我最终做了以下事情:
- 使用条件格式突出显示所有具有重复名称的单元格
- 按颜色对单元格进行排序,然后按苹果名称排序
- 按住 Shift 键选择包含突出显示的单元格的所有行,这些行在苹果列中没有“总计”。
对于大型数据集来说,这个过程相对较快。
答案3
我想建议宏观,最好的和最快的方法删除所有行从所有表格,不包含文本全部的具体来说B 列。
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
表示MACRO会TOTAL
在 中搜索10 Worksheets
,可编辑。您还可以根据需要调整/更改搜索范围
B1:B9
和字符串。Total