0

我正在尝试创建一个可以将每日报告拉入数据透视表的宏。我对 VB 非常陌生,但慢慢地解决它。我希望 activeworkbook 成为我正在使用的工作簿,而不是预定义的名称(这里是 report (40). )。

然后我希望它采用整个范围(每天都在增加)并从中制作一个数据透视表。

最后,我希望数据只使用今天的日期。

有什么帮助吗?

Sub DailyS()
'
' DailyS Macro
'
' Keyboard Shortcut: Ctrl+d
'
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, **SourceData:= _
        "report (40)!R1C1:R324C129**", Version:=xlPivotTableVersion15). _
        CreatePivotTable TableDestination:="**Sheet1!R3C1**", TableName:="PivotTable13" _
        , DefaultVersion:=xlPivotTableVersion15

Sheets("Sheet1").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("PivotTable13").PivotFields("Date")
        .Orientation = xlRowField
        .Position = 1
    End With
With ActiveSheet.PivotTables("PivotTable13").PivotFields("UserP")
    .Orientation = xlRowField
    .Position = 2
End With

With ActiveSheet.PivotTables("PivotTable13").PivotFields(**"Date"**)
    .Orientation = xlPageField
    .Position = 1
End With

ActiveSheet.PivotTables("PivotTable13").PivotFields("Date").CurrentPage = _
    "(All)"
With ActiveSheet.PivotTables("PivotTable13").PivotFields("Date")
    .PivotItems("10/1/2013").Visible = False
    .PivotItems("10/2/2013").Visible = False
    .PivotItems("10/3/2013").Visible = False
    .PivotItems("10/4/2013").Visible = False
    .PivotItems("10/5/2013").Visible = False
    .PivotItems("10/6/2013").Visible = False
    .PivotItems("10/7/2013").Visible = False
    .PivotItems("10/8/2013").Visible = False
    .PivotItems("10/9/2013").Visible = False
    .PivotItems("10/10/2013").Visible = False
    .PivotItems("10/11/2013").Visible = False
    .PivotItems("10/12/2013").Visible = False
    .PivotItems("10/13/2013").Visible = False
    .PivotItems("10/14/2013").Visible = False
    .PivotItems("10/15/2013").Visible = False
    .PivotItems("10/16/2013").Visible = False
    .PivotItems("10/17/2013").Visible = False
    .PivotItems("10/18/2013").Visible = False
    .PivotItems("10/19/2013").Visible = False
    .PivotItems("10/20/2013").Visible = False
    .PivotItems("10/21/2013").Visible = False
    .PivotItems("10/22/2013").Visible = False
End With
4

1 回答 1

0

我只是猜测你想要什么。
但是为了帮助您入门,这里有一些可能会有所帮助的代码。

更新数据透视源并在数据透视中选择指定日期的代码。

Dim pt as PivotTable, pt_item as PivotItem
Dim date_stamp as Date, source_data as string
Dim ws as WorkSheet
Dim Last_row as Long

Set ws = Activeworkbook.Sheets(1) 'considering Sheet1 has the pivot.
Last_row = ws.Range("A" & ws.Rows.Count).End(xlup).Row    

source_data = ws.Name & "!" & ws.Range("A1:E" & Last_row).Address(ReferenceStyle:=xlR1C1)
'source_data contains your dynamic range address
date_stamp = Format(Now(), "m/d/yyyy") 'this contains the date now, format as you wish

For Each pt in ws.PivotTables
If pt.Name = "PivotTable13" then
    pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
            SourceData:=source_data) 'this refresh the data source
    'this For Loop Selects the Current Date, just change the field name
    For Each pt_item In pt.PivotFields("Field_Name").PivotItems
        Select Case pt_item.Name
        Case date_stamp
            pt_item.Visible = True                
        Case Else            
            pt_item.Visible = False            
        End Select            
    Next pt_item
end if
Next pt

不完全是你需要的,但我希望这能让你开始。
我只假设您的数据包含在Columns A:E.

于 2013-10-24T10:04:11.997 回答