私はコードを使っています:
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は0OKこれまでのところ、私はこれを持っています:
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
まだ動作させることはできませんが、近づいてくると信じています。 module1として上記のサンプルブックを添付しました。
そこにいるプロたちは、5分もかからずに私を正しい立場に置くことができます。
ありがとう!