.Value = Evaluate("SUMPRODUCT") 返回#VALUE 但 .Value = "=SUMPRODUCT" 工作正常吗?
.Value = Evaluate("SUMPRODUCT") returning #VALUE but .Value = "=SUMPRODUCT" works correctly?
我有一个脚本可以根据数据集生成报告。该数据集与 tickets/tracking 号码的客户支持日志相关,其中包含基本的工单信息,例如工单打开时间、工单分配给了谁以及主要 issue/workload 是什么。我的目标是创建一个已经存在但使用 pivot tables 手动完成的报告(几乎没有人知道如何使用)并避免使用公式。
基本报告是每个员工每月完成每个工作量的多少。使用枢轴 table 很容易做到,只是大多数人不知道怎么做。这个 excel 公式得到了我想要的 1 月 =SUMPRODUCT((data!Column1="Employee1")*(data!Column2="Workload A")*(data!Column3>=DATEVALUE("2019-1"))*(data!Column3<DATEVALUE("2019-2")))
。数据的缺点是日期是格式化为短日期的日期值。我在 VBA:
中的解决方案
Cell.Value = "=SUMPRODUCT((data!" & AssigneeCol.Address & "=""" & Assignee.Value & """)*(data!" & WorkloadCol.Address & "=""" & Workload.Value & """)*(data!" & DateCol.Address & ">=DATEVALUE(""" & Worksheet.Name & """))*(data!" & DateCol.Address & "<DATEVALUE(""" & Year & Month2 & """)))"
这在 excel 中留下了一个巨大的公式,它引用了 data
的工作 sheet,它将不会包含在报告中(尽管我想它可能被隐藏)。我更愿意使用值来使 sheet 更容易被管理层处理。我尝试使用 Evaluate,但它使单元格值 #VALUE!
CheckCell.Value = Evaluate("=SUMPRODUCT((data!" & AssigneeCol.Address & "=""" & Assignee.Value & """)*(data!" & WorkloadCol.Address & "=""" & Workload.Value & """)*(data!" & DateCol.Address & ">=DATEVALUE(""" & Worksheet.Name & """))*(data!" & DateCol.Address & "<DATEVALUE(""" & Year & Month2 & """)))")
这是因为 Evaluate() 的固有限制,即:DATEVALUE
在 SUMPRODUCT
内吗?据我所知它应该可以工作,但我不知道。
没有解决您关于评估的问题,但您仍然可以使用单元格内公式,然后用结果替换公式
With Cell
.Formula = "=SUMPRODUCT((data!... etc etc"
DoEvents
.Value = .Value
End With
我有一个脚本可以根据数据集生成报告。该数据集与 tickets/tracking 号码的客户支持日志相关,其中包含基本的工单信息,例如工单打开时间、工单分配给了谁以及主要 issue/workload 是什么。我的目标是创建一个已经存在但使用 pivot tables 手动完成的报告(几乎没有人知道如何使用)并避免使用公式。
基本报告是每个员工每月完成每个工作量的多少。使用枢轴 table 很容易做到,只是大多数人不知道怎么做。这个 excel 公式得到了我想要的 1 月 =SUMPRODUCT((data!Column1="Employee1")*(data!Column2="Workload A")*(data!Column3>=DATEVALUE("2019-1"))*(data!Column3<DATEVALUE("2019-2")))
。数据的缺点是日期是格式化为短日期的日期值。我在 VBA:
Cell.Value = "=SUMPRODUCT((data!" & AssigneeCol.Address & "=""" & Assignee.Value & """)*(data!" & WorkloadCol.Address & "=""" & Workload.Value & """)*(data!" & DateCol.Address & ">=DATEVALUE(""" & Worksheet.Name & """))*(data!" & DateCol.Address & "<DATEVALUE(""" & Year & Month2 & """)))"
这在 excel 中留下了一个巨大的公式,它引用了 data
的工作 sheet,它将不会包含在报告中(尽管我想它可能被隐藏)。我更愿意使用值来使 sheet 更容易被管理层处理。我尝试使用 Evaluate,但它使单元格值 #VALUE!
CheckCell.Value = Evaluate("=SUMPRODUCT((data!" & AssigneeCol.Address & "=""" & Assignee.Value & """)*(data!" & WorkloadCol.Address & "=""" & Workload.Value & """)*(data!" & DateCol.Address & ">=DATEVALUE(""" & Worksheet.Name & """))*(data!" & DateCol.Address & "<DATEVALUE(""" & Year & Month2 & """)))")
这是因为 Evaluate() 的固有限制,即:DATEVALUE
在 SUMPRODUCT
内吗?据我所知它应该可以工作,但我不知道。
没有解决您关于评估的问题,但您仍然可以使用单元格内公式,然后用结果替换公式
With Cell
.Formula = "=SUMPRODUCT((data!... etc etc"
DoEvents
.Value = .Value
End With