查询以根据列的值删除行

Query to remove rows based on value of a column

我有一个文件,其数据如屏幕截图所示:

需要构建一个查询,该查询将删除具有相同搜索引用的所有行,前提是至少有一行具有非零值。从特定的屏幕截图中,所有突出显示的行都应删除,因为至少有一个条目 Order_Placed=1.

有没有人知道是否同样可行?

已应用解决方法过滤掉 Order_Placed=1 的行,然后 vlookup 整个 table,但想要像解决方案

这样的查询

预先感谢您的协助!

我会建议您使用 VBA 来实现您的目标。通过使用我在下面编写的代码,每次打开此 excel 时,您要删除的行将被删除。我查看了您所附的照片,只有当您将 table 放入 A1 单元格时,我的代码才会起作用。否则代码可能无法工作:)

我将解释如何将我的代码添加到您的 excel。如果你知道使用 VBA 你可以跳过这部分:

在“开发人员”选项卡中,单击“Visual Basic”。然后,依次单击这些:插入、模块。然后你应该粘贴下面的代码。

我希望它有效,如果您遇到任何问题,我们可以再次联系。 (不要忘记将此文件保存为启用宏的“.xlsm”格式!)

注意:如果您查看代码,我在 三个 处写了“16”。您应该根据您的总行数修改此数字。我使用 16 来保护我的计算机免受额外的 运行 问题:)

祝你有愉快的一天。

Sub Auto_Open()

    For i = 2 To 16
        If Cells(i, 3).Value = 1 Then
            For j = 2 To 16
                If Cells(j, 1).Value = Cells(i, 1).Value Then
                    Rows(j).Interior.Color = vbRed
                End If
            Next
        End If
    Next
    
    For i = 2 To 16
        Rows(i).Select
        If Rows(i).Interior.Color = vbRed Then
            Selection.Delete
            i = i - 1
        End If
    Next

End Sub

Power Query 解决方案

让我们像您一样获取示例数据

  • select 你的数据
  • 数据 选项卡单击 get & transform 然后 from table
  • 电源查询window将被打开

  • 通过 group by 创建 2 个新列说 datdummy

  • 展开dat得到这样的

  • 关闭并将数据加载回 excel

现在您可以轻松地通过虚拟列过滤掉数据。