2016-09-23 98 views
0

我使用的代碼:Excel的VBA透視ISO周選擇

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周選擇當前周和當前周和/或

任何幫助將不勝感激!

非常感謝!

有沒有好的撒瑪利亞人在那裏?我對VBA毫無希望,並且已經在網上搜索這個,並在幾個論壇上提出問題。我希望這將是一個簡單的編輯。我設法解決了我原來的一些需求,現在只需要按照上面的方法選擇宏,再加上接下來的4週數據。所以我想是這樣的:

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

真的堅持了這一點,如果任何VBA優點在那裏可以採取可憐可憐我,指出我在正確的方向,將不勝感激。

回答

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分鐘把我的權利,將不勝感激,因爲我正在努力通過這個拙劣。

謝謝!