2016-09-23 6 views
0

私は、コードを使用しています:エクセル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 

これはピボットで先週選択し、以前の要件のための素晴らしい作品です。しかし、今週の現在の週に基づいて、現在の週および/またはを現在の週と4週間先に選択できるようにしたいと考えています。

ご協力いただければ幸いです!

多くの感謝!

いいサマリア人はありますか?私はVBAで絶望的であり、これをインターネットで検索し、いくつかのフォーラムで尋ねました。私はこれが簡単な編集であることを期待していました。私は私の元の要件のいくつかを回避することができましたが、今は上記のようにマクロを選択し、次の4週間のデータだけを選択する必要があります。そこに任意のVBAのプロが私に同情を取り、正しい方向に私を指すことができれば

本当にこれで立ち往生
If pvtI > CurWkNum Then 
CurWkNum = pvtI +1 
CurWkNum = pvtI +2 
CurWkNum = pvtI +3 
CurWkNum = pvtI +4 

とても感謝:だから私のような何かを推測します。 [OK]を

答えて

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分を惜しまないことができます。

ありがとうございます!