Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA,通过列表对日期排序_Excel_Vba_Pivot Table - Fatal编程技术网

Excel VBA,通过列表对日期排序

Excel VBA,通过列表对日期排序,excel,vba,pivot-table,Excel,Vba,Pivot Table,我正在尝试对销售订单列表(在透视表上)进行排序并进行筛选,以查找计划在假日发货的条目(约12个日期的列表) 考虑到此透视表是动态的,但日期列表不是,是否有方法通过VBA宏应用这些过滤器,因此我不必手动执行此操作 我尝试过使用宏记录器,但它只是将所有现有日期设置为 实际的名单要多得多 With ActiveSheet.PivotTables("SalesOrders").PivotFields("Due Date") .PivotItems("2/28/2019").Visible = F

我正在尝试对销售订单列表(在透视表上)进行排序并进行筛选,以查找计划在假日发货的条目(约12个日期的列表)

考虑到此透视表是动态的,但日期列表不是,是否有方法通过VBA宏应用这些过滤器,因此我不必手动执行此操作

我尝试过使用宏记录器,但它只是将所有现有日期设置为

实际的名单要多得多

With ActiveSheet.PivotTables("SalesOrders").PivotFields("Due Date")
    .PivotItems("2/28/2019").Visible = False
    .PivotItems("5/22/2019").Visible = False
    .PivotItems("7/17/2019").Visible = False
    .PivotItems("7/18/2019").Visible = False
    .PivotItems("8/7/2019").Visible = False
    .PivotItems("8/16/2019").Visible = False
    .PivotItems("8/19/2019").Visible = False
    .PivotItems("8/22/2019").Visible = False
    .PivotItems("8/28/2019").Visible = False
    .PivotItems("8/29/2019").Visible = False
    .PivotItems("8/30/2019").Visible = False
这真的不起作用,因为日期会改变。。。
我不确定如何进行,欢迎提供任何帮助。

如果您可以向数据中添加新列,则不需要使用VBA,您可以将其合并到透视表中。添加一个新工作表,其中一列仅包含假日日期,第二列为True。然后在销售订单数据中添加一个新列,并在该列中使用Vlookup函数查看销售订单日期中的日期是否在假日列表中找到。您可以将此新列作为筛选器添加到透视表中。下面的屏幕截图显示了一个示例。

这些项目不只是文本字符串吗?似乎您可以构建一个格式化为文本的日期集合,在集合中循环,并根据需要设置可见性。它可能需要两个集合(循环),一个将可见性设置为False,另一个将可见性设置为true不幸的是,日期是通过外部数据连接以日期格式出现的。。。是否有一种方法可以将所有日期的可见性设置为false,然后仅将少数特定日期的可见性设置为true?不幸的是,我的数据透视表中的数据是通过一个外部数据源输入的,我最初直接输入到数据透视表中。除非它是我可以在SQL(我的数据查询)中计算的,或者创建一个计算的COLLAM?您可以在透视表旁边添加“is_Holiday”列,并使其公式引用透视表中的日期。然后它将指向节假日的行。我想不出一种方法可以让你过滤结果,但至少你可以快速扫描列表中的“真”值。(可以使用条件格式使扫描更容易。)
End With
With ActiveSheet.PivotTables("SalesOrders").PivotFields("Due Date")
     .PivotItems("5/25/2020").Visible = True
     .PivotItems("7/3/2020").Visible = True
     .PivotItems("7/6/2020").Visible = True
End With