首页 > 解决方案 > 删除所有状态为“XXX”的订单的宏,然后删除所有订单类型:Z、L、ZR

问题描述

我们每个月都会手动将信息从 SAP 导出到 Excel,然后从中创建生产计划。将信息转化为 excel 的第一步是过滤到某些标准并删除其余部分。我是 VBA/宏的初学者,我只能在网上找到有关如何通过某些条件删除行而不是删除超出我所需条件的行的示例。

我想删除所有状态为“XXX”的订单。然后我想删除所有订单类型,除了:Z、L、ZR

我假设这是可能的,而且我只是没有受过足够的 vba 教育,无法弄清楚。请告诉我,谢谢!

标签: excelvba

解决方案


为您要保留的内容应用过滤器,并将它们复制到新工作簿或临时工作表中,您可以从中复制回来。

Option Explicit

Sub Macro1()

    Const COL_STATUS = 1 ' column no
    Const COL_ORDERTYPE = 4 ' column no
       
    Dim ws As Worksheet, wsTemp As Worksheet
    Dim rng As Range
       
    With ThisWorkbook
        Set ws = .Sheets("Sheet1")
        Set wsTemp = .Sheets.Add(after:=.Sheets(.Sheets.Count))
    End With
       
    Application.ScreenUpdating = False
    With ws.UsedRange
        .AutoFilter COL_STATUS, Array("Z", "L", "ZR"), xlFilterValues
        .AutoFilter COL_ORDERTYPE, "<>ZZZ"
        .Copy wsTemp.Range("A1")
        .AutoFilter
        .Cells.Clear
    End With
       
    With wsTemp
        .UsedRange.Copy ws.Range("A1")
        Application.DisplayAlerts = False
        .Delete
        Application.DisplayAlerts = True
    End With
    Application.ScreenUpdating = True
    MsgBox "Done"
  
End Sub

推荐阅读