对于要创建其更新版本的成本跟踪表,我有一些不同的东西可用于从中提取数据:
我正在使用的当前公式(不起作用)是:
=SUMPRODUCT(SUMIFS(WP2C_Employee_Invoice,WP2C_Employee_Name,Project_Managers,WP2C_Employee_Task,Tasks[WP2C Implementation]))
打破这个公式可以帮助您(和我自己)了解我可能会出问题的地方:
SUMPRODUCT(
用于总结SUMIFS
返回的数组的值,因为我们正在比较范围。
SUMIFS(
:
WP2C_Employee_Invoice
,WP2C_Employee_Name
和WP2C_Employee_Task
组成的表包含每个项目的发票,其来源的员工以及它们所属的任务代码。Project_Managers
是雇员组之一。Tasks[WP2C Implementation]
是任务代码组之一。(据我所知),该公式应比较项目发票表的每一行,并查看员工和任务是否有效,产生有效总和的数组,然后将其与{{1}相加}。
但是,产生的数字是错误的,总计为125,598.41美元,而不是正确的总和为845,380.11美元(使用表格过滤器来获取值,然后对其求和)。使用SUMPRODUCT
来查看可能的原因(剥离发票金额列并重新使用条件),结果只有14次匹配,而正确值为78次(来自过滤)。
注释:
这是我使用的COUNTIFS
公式:
COUNTIFS
仅使用一组条件会为该组条件产生正确的结果,只有在同时使用这两组条件时,该方法才有效。
更新:我创建了一个UDF以完成此工作表,但我仍然想知道公式有什么问题。不必为工作表启用宏就可以了。
答案 0 :(得分:1)
首先,您的员工列表中有重复的姓名。对于这些重复项,由于无法确定应计入哪个类别的金额,因此将在列出该雇员的所有类别中进行计数。
(Kristoffer既是老板又是雇员,因此他的金额将同时添加到老板和雇员类别中)。我怀疑您是否满意,因为以下公式会为您提供给Boss People / Foo的输出,而不是为Employees / Foo的输出:
=SUMPRODUCT(COUNTIF(Boss_People[Name],Invoice[Full Name])*(COUNTIF(Task[Foo],Invoice[Task]))*Invoice[Amount])
如果您希望动态更改名称,以便跨公式复制/拖动-并假设摘要表以A1开头,则这是B2的公式:
=SUMPRODUCT(COUNTIF(INDIRECT($A2&"[Name]"),Invoice[[Full Name]:[Full Name]])*(COUNTIF(INDIRECT("Task["&B$1&"]"),Invoice[[Task]:[Task]]))*Invoice[[Amount]:[Amount]])
此处,单元格A2包含表的名称,该表具有标题为“名称”的列标题,而表B1为任务的名称。该公式为您提供了项目经理,业务分析师和老板人员所需的输出。由于姓名重复,员工不准确。