如果某个单元格具有某个值 XXX,如何删除没有该值 XXX 的行?

如果某个单元格具有某个值 XXX,如何删除没有该值 XXX 的行?

在发布的示例中,如果对于 Jane 和 David,我只对 B 列中包含“Total”的行感兴趣,那么我该如何删除 B 列中不包含“Total”的行。我想将此功能应用于工作簿中的多张工作表。

例子

答案1

最简单的方法是简单地对所需的值进行排序,然后删除该值之前的所有行,然后删除该值之后的所有行,只留下与该值完全相同的行。

当然,这是 Excel,您可以稍微多做一点工作,以略有不同的方式完成每一步。例如,在方便的地方插入一个“辅助”列(例如,就在您感兴趣的列旁边),然后快速编写一个 IF 测试,以“”表示未找到该值。然后复制或填充整个列和公式(每个测试该行的单元格),对辅助列进行排序,这样您要删除的所有行都会在一起,而不是分成两堆。根据您的情况和偏好,您可能会选择哪种选择更容易。

如果您需要宏来执行此操作,请遵循相同的概念。在宏中,只需测试您感兴趣的列中的第一个单元格的值,如果未找到,则让宏删除该行,然后循环直到到达数据末尾。如果该列中没有单元格可以为空白,则可以测试空白并在找到时退出。但是...如果单元格可以为空,则需要尝试其他方法。根据您的表格和其他单元格的特征,各种各样的方法都可以奏效,但您也可以只在大脑选择的最后一个可能的单元格上启动宏,然后向上工作(包括每次测试行号,这样您就可以停在第 2 行,如果您有标题,而不是删除标题行然后永久循环第一行)。

或者将两者结合起来。在宏中对该列上的数据进行排序,查找所需值的第一次出现,删除该值上方的所有数据行,然后测试直到第一次失败,然后删除之后的所有行。

方法有很多。我的方法将是我工作中的第一个。对于我提供给别人使用的电子表格,我会尝试通过自动化来修改它。或者...取决于用户,知识渊博的人还是新手,老板还是清洁工吉米。诸如此类。

答案2

谢谢大家的帮助。我最终做了以下事情:

  1. 使用条件格式突出显示所有具有重复名称的单元格
  2. 按颜色对单元格进行排序,然后按苹果名称排序
  3. 按住 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 EditorCopy & Paste代码为标准模块
  • 在你之前跑步,确保搜索字符串全部的B1:B9所有表格,从你试图删除行

笔记:

  • For X = 1 to 10表示MACRO会TOTAL在 中搜索10 Worksheets,可编辑。

  • 您还可以根据需要调整/更改搜索范围B1:B9和字符串。Total

相关内容