Excel 宏透视表自动更新日期和名称
我正在尝试创建一个宏,可以将每日报告拉入数据透视表。我对VB非常陌生,但工作起来很慢。我希望activeworkbook是我正在使用的,而不是预定义的名称(这里是report(40)) 然后,我希望它采取整个范围(每天增加),并作出一个数据透视表出来 最后,我希望数据只使用今天的日期 有什么帮助吗Excel 宏透视表自动更新日期和名称,excel,vba,pivot-table,Excel,Vba,Pivot Table,我正在尝试创建一个宏,可以将每日报告拉入数据透视表。我对VB非常陌生,但工作起来很慢。我希望activeworkbook是我正在使用的,而不是预定义的名称(这里是report(40)) 然后,我希望它采取整个范围(每天增加),并作出一个数据透视表出来 最后,我希望数据只使用今天的日期 有什么帮助吗 Sub DailyS() ' ' DailyS Macro ' ' Keyboard Shortcut: Ctrl+d ' Sheets.Add ActiveWorkbook.Pivo
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
我只是在猜测你想要什么。
但为了帮助您入门,这里有一些代码可能会有所帮助 用于更新数据透视源并在数据透视中选择指定日期的代码
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
不完全是您需要的,但我希望这能让您开始。我只假设您的数据包含在
列A:E
中