gpt4 book ai didi

vba - Excel VBA 过滤前一天的数据透视表和数据透视图 - 数据透视过滤字段

转载 作者:行者123 更新时间:2023-12-02 19:26:06 25 4
gpt4 key购买 nike

这是我的问题,每一位代码、每一次更改、每一种类型都不起作用。我在工作场所使用 Office 360​​(最新),因此它是 excel 2016 和 VBA 7.1。

我想做的是自动化我们的轮类结束报告。流程如下:

我们每小时将数据输入 Excel 工作表(日志)。在一天结束时,凌晨 5:00,我们保存并关闭该日志,打开另一个 Excel 工作表,将数据导入到 Power Pivot 中,并将其显示在数据透视表上(为我们的老板进行打印格式),然后我们选择使用过滤器下拉列表过滤前一个日期,然后打印它。我们使用三 (3) 个报告来完成此操作:2 个数据透视表和 1 个数据透视图。 Power Pivot 从日志表导入所有数据以重新格式化以供打印。

我已经成功地获取并重写了自动化过程的代码(从这里开始):自动保存日志,关闭日志,打开报告工作簿,刷新数据,打印数据,然后关闭那个报告。我现在唯一缺少的部分是自动过滤。

我尝试过的代码非常庞大,但这是我最近尝试过的一个示例(我删除并重新复制了很多代码......)

Sub Filter_PivotField()
'Description: Filter a pivot table or slicer for a specific date or period
'Source: excelcampus.com/vba/filter-pivot-table-slicer-recent-date-period

Dim sSheetName As String
Dim sPivotName As String
Dim sFieldName As String
Dim sFilterCrit As String
Dim pi As PivotFields

'Set the variables
sSheetName = "EOS Report"
sPivotName = "PivotTable1"
sFieldName = "Date"
sFilterCrit = "xlDateYesterday"
'sFilterCrit = ThisWorkbook.Worksheets("EOS Report").Range("O1").Value

With ThisWorkbook.Worksheets(sSheetName).PivotTables(sPivotName).PivotFields(sFieldName)
'Clear all filter of the pivotfield
.ClearAllFilters

'Loop through pivot items of the pivot field
'Hide or filter out items that do not match the criteria
For Each pi In .PivotFields
If pi.Name <> sFilterCrit Then
pi.Visible = False
End If
Next pi

End With

End Sub

没有效果......

当我录制执行手动过滤器的宏时,我得到:

Sub manualfilter()
'
' manualfilter Macro
'

'
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[Bi-Hourly Report].[Date].[Date]").VisibleItemsList = Array( _
"[Bi-Hourly Report].[Date].&[2016-09-28T00:00:00]")
End Sub

但是当我尝试重新运行我刚刚录制的相同宏(在更改日期后)时,它失败了。我启用和禁用了多项选择选项等。

更不用说,尝试自动过滤图表是一场噩梦,因为表格,是的,上面有大量文章,但是图表呢?研究中并没有太多内容。

这是过滤器按钮的图像,因为我研究的几乎所有内容都是对表的列进行排序,而不是使用数据透视表对过滤器本身进行排序。

Table Filter

Chart Filter

我无法发布实际的 Excel 电子表格,因为它们是公司的专有属性(property),但如果需要,我可以使用虚假数据复制该格式。

最佳答案

看看这个。

Dim prev_date As String

prev_date = Month(Date - 1) & "/" & Day(Date - 1) & "/" & Year(Date - 1)
Thisworkbook.Sheets("Sheet1").Activate
'change this line with your sheet where pivot table is present. Change Sheet name.
ActiveSheet.PivotTables("PivotTable1").RefreshTable
ActiveSheet.PivotTables("PivotTable1").PivotFields("Date").CurrentPage = prev_date

关于vba - Excel VBA 过滤前一天的数据透视表和数据透视图 - 数据透视过滤字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39797140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com