我首先说明目标,然后是我采取的步骤,问题,最后是我的问题。
目标: 在2017年1月至2017年12月的两个日期中搜索表格
步骤:
问题:
问题:
用于搜索按钮的宏:
ActiveSheet.PivotTables("PivotTable2").PivotFields("Months").ClearAllFilters
Application.CutCopyMode = False
ActiveSheet.PivotTables("PivotTable2").PivotFields("Factuurdatum:"). _
PivotFilters.Add2 Type:=xlDateBetween, Value1:=ActiveSheet.Range("E3").Value, Value2:=ActiveSheet.Range("F3").Value
答案 0 :(得分:0)
尝试以下测试
Sub test()
Dim startDate As String
Dim endDate As String
startDate = Format$(ActiveSheet.Range("E3"), "dd-mmm-yy")
endDate = Format$(ActiveSheet.Range("F3"), "dd-mmm-yy")
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Factuurdatum:").PivotFilters
Do While .count > 0
.Item(1).Delete
Loop
.Add Type:=xlDateBetween, Value1:=startDate, Value2:=endDate
End With
End Sub
参考:
答案 1 :(得分:0)
我的一位朋友找到了解决方法:
Excel将宏中的日期视为欧洲日期,但似乎它在过滤函数中使用美国日期(这就是Excel转换它的原因)。
对于解决方法,您可以将日期写为:2017年5月10日,或者,如果您想使用正常(欧洲)日期,那么我们可以使用下面的宏:
ActiveSheet.PivotTables("PivotTable2").PivotFields("Months").ClearAllFilters
ActiveSheet.PivotTables("PivotTable2").PivotFields("Factuurdatum:"). _
PivotFilters.Add Type:=xlDateBetween, Value1:=Replace(ActiveSheet.Range("E4").Value, "-", "/"), Value2:= _
Replace(ActiveSheet.Range("F4").Value, "-", "/")
在这个宏中使用了Replace()函数,在这个例子中,这个函数将' - '替换为'/',因此它成为我们想要的日期。