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

我已经find了一个解决方法,但如果任何人有一个更干净的方式做到这一点,我会感兴趣/感激。

我在电子表格上有两个框,名为DateFrom和DateTo,与透视表中的Datefilter一起使用。 两者都是格式为DD / MM / YYYY。 送入表格的数据也是这种格式。 数据透视表也以相同的格式返回date。 我所有的设置都在英国英国,我已经在一台单独的机器上尝试过,结果相同。

然后我使用下面的代码来进入数据透视表:

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

代码以string的forms读取两个单元格,然后将其应用到数据透视表,就好像它们是US格式(MM / DD / YYYY)。 荒谬!

这是我如何解决这个问题:

我有另外两个单元格以数字格式查看这两个单元格,并将代码指向这两个单元格。 不知道你们中的任何一个,但我会努力将任何date转换为数字在我的头…!

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

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

但是,使用CLng将date值转换为Long ,一切正常。

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