我正在尝试创建一个可以将每日报告拉入数据透视表的宏。我是VB的新手,但是慢慢地解决了。我希望activeworkbook成为我正在使用的那个而不是预定义的名称(这里是报告(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
答案 0 :(得分: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
。