此代码过去一直有效。工作簿中没有任何更改,并且我已验证所有引用的数据均已正确格式化。你知道什么会“打破”这个吗?不再将“之间”过滤器应用于数据透视表中的日期。
经过验证的数据透视表可以在手动更改时工作。选中数据表中的字段,以确保没有任何变化并且没有输入损坏的数据。
StartDate = Sheet17.Range("D5").Value
EndDate = Sheet17.Range("D6").Value
Set pt = Sheet6.PivotTables(1)
Set ptF1 = pt.PivotFields("Est closing Date")
ptF1.ClearAllFilters
ptF1.PivotFilters.Add _
Type:=xlDateBetween, Value1:=StartDate, Value2:=EndDate
Sheet17.Range("M10:Q999").ClearContents
pt.TableRange1.Offset(4, 0).Copy
Sheet17.Cells(10, 13).PasteSpecial xlPasteValues
Set pt = Sheet6.PivotTables(2)
Set ptF1 = pt.PivotFields("Funds Date")
ptF1.ClearAllFilters
ptF1.PivotFilters.Add _
Type:=xlDateBetween, Value1:=StartDate, Value2:=EndDate
Sheet17.Range("A10:E999").ClearContents
'omit copying the top row of the PivotTable:
pt.TableRange2.Offset(4, 0).Copy
Sheet17.Cells(10, 1).PasteSpecial xlPasteValues
'Fill in dates
For ii = 11 To 100
If (Me.Cells(ii, 1) = "" And Me.Cells(ii, 2) <> "") Then
Me.Cells(ii, 1) = Me.Cells(ii - 1, 1)
End If
Next
'Fill in dates
For ii = 11 To 100
If (Me.Cells(ii, 8) = "" And Me.Cells(ii, 9) <> "") Then
Me.Cells(ii, 8) = Me.Cells(ii - 1, 8)
End If
Next
End Sub
答案 0 :(得分:0)
我想这是关于日期格式的。请尝试确保日期格式正确,例如G。通过这个:
ptF1.PivotFilters.Add2 _
Type:=xlDateBetween, _
Value1:=CStr(CDate(StartDate)), Value2:=CStr(CDate(EndDate)), _
WholeDayFilter:=True