我有一个从外部数据源(访问)创建的数据透视表,其中包含每周平均 3 个月的每小时记录数。在这个数据透视表旁边,我创建了一个列来计算一天中每小时的平均数记录。(这里的一周只有 5 天——不包括周六和周日)。
为了实现上述目标,我创建了一个 UDF,它从数据透视数据字段 (Week_Ending) 中计算周数。为了确保代码不计算幽灵或不存在的周数,我在 UDF 中使用了 pivotcache 刷新。这完美地工作,除了它现在在我期望每日平均值的单元格中给出#value(公式中使用的值是错误的数据类型)。如果从“Week_Ending”字段中选择一周而不是全部,我发现单元格公式没有问题并且可以工作。
我附上了代码和单元格函数以及问题的图像。
单元格 E6 中的单元格公式,它与单元格 E29 相似(每小时单元格引用每个单元格增加 1)
=IF($E$4=1,GETPIVOTDATA("CountOfCase_Id",$A$4,"HOURLY",A6)/5,GETPIVOTDATA("CountOfCase_Id",$A$4,"HOURLY",A6)/($E$4*5))
Vba UDF 函数
Option Explicit
Function WeekCount(InputVal As Variant) As Integer
Dim book1 As String, PivotName As String
book1 = ThisWorkbook.Name
With Workbooks(book1).ActiveSheet
If InputVal = "(All)" Then
PivotName = .PivotTables(1).Name
.PivotTables(PivotName).PivotCache.MissingItemsLimit = xlMissingItemsNone
.PivotTables(PivotName).PivotCache.Refresh
WeekCount = .PivotTables(PivotName).PivotFields("WEEK_ENDING").PivotItems.Count
Else
WeekCount = 1
End If
End With
End Function
我很感激任何帮助。Excel版本是2003。