Excel VBA Pivot ISO周选择

时间:2016-09-23 14:06:44

标签: excel vba pivot

我正在使用代码:

Sub weekselect()
Dim CurWkNum As Integer: CurWkNum = 31
Dim pvtI As PivotItem

With Worksheets("PIVOT 4").PivotTables(1)
    .PivotCache.Refresh
    .ClearAllFilters
    For Each pvtI In .PivotFields("WEEK_NUMBER").PivotItems
        If pvtI > CurWkNum Then
            CurWkNum = pvtI 
        End If
    Next pvtI
    For Each pvtI In .PivotFields("WEEK_NUMBER").PivotItems
        pvtI.Visible = (CInt(pvtI.Name) = CurWkNum)
    Next pvtI
End With

End Sub

这是选择枢轴中的最后一周,并且适用于之前的要求。但是,我现在希望能够根据当前的ISO周选择当前周和/或当前周和4周。

非常感谢任何帮助!

非常感谢!

那里有好心的撒玛利亚人吗?我对VBA毫无希望,并在互联网上搜索了这个并在几个论坛上询问。我希望这将是一个简单的编辑。我设法解决了一些原始要求,现在只需要宏来选择上面加上接下来的4周数据。所以我想是这样的:

If pvtI > CurWkNum Then
CurWkNum = pvtI +1
CurWkNum = pvtI +2
CurWkNum = pvtI +3
CurWkNum = pvtI +4

真的坚持这一点,所以如果任何VBA职业选手在那里可能会对我表示同情并指出我正确的方向,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

好到目前为止,我已经得到了这个:

Sub Test() Dim ISOweekNum AsInteger Dim pvtI As PivotItem Dim ws As Worksheet

ForEach ws In ThisWorkbook.Worksheets(Array("PIVOT", "PIVOT 2", "PIVOT 3", "PIVOT 4")) With ws.PivotTables(1)
            .PivotCache.Refresh
            .ClearAllFilters
        ISOweekNum = DatePart("ww", Date, vbMonday, vbFirstFourDays)

ForEach pvtI In .PivotFields("WEEK_NUMBER").PivotItems
            pvtI.Visible = (CInt(pvtI.Name) >= ISOweekNum And CInt(pvtI.Name) <= ISOweekNum + 4) Next pvtI EndWith Next ws EndSub

Onedrivexlsworkbooksample

我不能让它工作但是相信它越来越近了。我附上了一个样本工作簿,上面是module1。

那里的任何职业选手都可以在5分钟内让我正确,但我会很感激,因为我正在努力解决这个问题。

谢谢!