使用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)