使用VBA在数据透视表中的两个日期之间进行过滤。英国到美国的日期格式问题

问题描述 投票:6回答:1

我找到了一个解决方法,但如果有人有一个更清洁的方式这样做我会感兴趣/感激。

我在电子表格上有两个框,名为DateFrom和DateTo,用于数据透视表中的日期过滤器。两者的格式均为DD / MM / YYYY。输入表格的数据也采用这种格式。数据透视表也以相同的格式返回日期。我的所有设置都是英国英语,我在一台单独的机器上尝试了相同的结果。

然后,我使用以下代码进入数据透视表:

ActiveSheet.PivotTables("Pivot").PivotFields("Date").PivotFilters. _
    Add Type:=xlDateBetween, Value1:=Range("DateFrom").Value, Value2:=Range("DateTo").Value

代码将两个单元格作为字符串读取,然后将其应用于数据透视表,就像它们是美国格式(MM / DD / YYYY)一样。荒谬!

这就是我如何解决它:

我还有两个单元格以数字格式查看这两个单元格,并将代码对准这两个单元格。不确定你们中的任何人,但我很难将任何日期转换为数字... ...

如果你有一个简单的解决方案和/或解释这个完全疯狂,我会非常感激!

excel date excel-vba format pivot-table vba
1个回答
6
投票

的确,这很奇怪。我已经使用Excel 2007和德语区域设置重现了您的问题。

但是,使用Long将日期值转换为CLngs时,一切正常:

ActiveSheet.PivotTables("Pivot").PivotFields("Date").PivotFilters. _
Add Type:=xlDateBetween, Value1:=CLng(Range("DateFrom").Value), Value2:=CLng(Range("DateTo").Value)
© www.soinside.com 2019 - 2024. All rights reserved.