/ / Excel VBA Pivot ISO週選択-Excel、VBA、Pivo​​t

Excel VBAピボットISO週選択 - Excel、VBA、ピボット

私はコードを使っています:

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

OKこれまでのところ、私はこれを持っています:

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分もかからずに私を正しい立場に置くことができます。

ありがとう!