使用SUMPRODUCT统计逾期任务员工数的#VALUE!错误排查
解决跨工作簿SUMPRODUCT统计逾期任务的#VALUE!错误
你的公式报错的核心问题是写法不符合SUMPRODUCT的逻辑——你现在直接把两个区域作为参数传入,但SUMPRODUCT需要的是条件判断后生成的布尔数组(TRUE/FALSE),再转换成可求和的数值(1/0)才能正确统计数量。
给你修正后的正确公式写法,同时兼顾跨工作簿无需打开的要求:
=SUMPRODUCT(--('[完整路径+工作簿名.xlsx]工作表名'!W37:W189 > '[完整路径+工作簿名.xlsx]工作表名'!$S$9))
关键细节说明:
--的作用:把条件判断得到的TRUE(符合逾期)转成1,FALSE转成0,SUMPRODUCT会自动对这些1和0求和,得到逾期员工的数量- 跨工作簿引用格式:必须严格写成
[工作簿名.xlsx]工作表名!单元格区域,如果工作簿不在当前Excel文件的同目录下,要加上完整绝对路径(比如C:\Work\Tasks\[EmployeeTasks.xlsx]DataSheet!W37:W189) - 如果工作簿或工作表名称包含空格,一定要用单引号把整个引用部分包裹起来,比如
'[My Task Data.xlsx]Task List'!W37:W189
额外排查点(如果还是报错):
- 检查W列的「完成日期」是不是真的是日期格式:有时候单元格看起来是日期,但实际是文本格式,会导致日期比较失败。你可以在目标工作簿里用
=ISDATE(W37)验证,返回FALSE的话就需要把文本转换成日期格式(比如用DATEVALUE()函数) - 确认$S$9的「截止日期」也是标准日期格式,而非文本
- 确保目标工作簿没有被其他程序锁定(比如正在被其他人编辑),否则跨工作簿引用可能无法读取数据
举个具体的实例,假设你的任务数据工作簿在D:\Project\TaskRecords.xlsx,工作表是EmployeeTasks,那么公式就是:
=SUMPRODUCT(--('D:\Project\[TaskRecords.xlsx]EmployeeTasks'!W37:W189 > 'D:\Project\[TaskRecords.xlsx]EmployeeTasks'!$S$9))
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

