我有一个脚本,可以从数据集中生成报告。数据集与票证/跟踪号的客户支持日志有关,具有基本的票证信息,例如何时打开票证,将票证分配给谁以及主要问题/工作量是什么。我的目标是创建一个已经存在但通过数据透视表手动完成的报告(几乎没人知道如何使用它),并避免使用公式。
基本报告是每个员工每月完成多少工作量。数据透视表很容易实现,但大多数人不知道如何做。这个excel公式可以得到我想要的=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
工作表中,该工作表将不包含在报告中(尽管我认为它可能是隐藏的)。我更喜欢使用值来使工作表更易于管理。我尝试使用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
吗?据我所知它应该可以工作,但是我不知道。
答案 0 :(得分:2)
没有解决有关评估的问题,但是您仍然可以使用单元内公式,然后用结果替换公式
With Cell
.Formula = "=SUMPRODUCT((data!... etc etc"
DoEvents
.Value = .Value
End With