Excel 365中按客户多条件求和多行工时(横向表格)
横向表格按客户汇总工时的Excel 365解决方案
方案1:SUM+FILTER(Excel 365专属,推荐)
针对横向表格的结构,利用动态数组函数FILTER可以精准筛选符合条件的列,再求和。假设表格结构如下:
- 第一行(B1:Z1):客户名称
- 第二行(B2:Z2):工时类型(包含"Hrs Worked")
- 第三行及以下(B3:Z100):各员工的工时数据
- 可变客户参数存于A13单元格
公式写法:
=SUM(FILTER(B3:Z100, (B1:Z1=A13)*(B2:Z2="Hrs Worked")))
- 逻辑:
(B1:Z1=A13)筛选目标客户的列,(B2:Z2="Hrs Worked")筛选工时类型列,两个条件相乘得到同时满足的列范围,FILTER提取这些列的工时数据后,SUM完成求和。
方案2:修正SUMPRODUCT用法
如果偏好SUMPRODUCT,需确保引用范围维度完全匹配:
=SUMPRODUCT((B1:Z1=A13)*(B2:Z2="Hrs Worked")*B3:Z100)
- 逻辑:三个数组(客户匹配、工时类型匹配、工时数据)对应位置相乘,符合条件的单元格会被纳入计算,SUMPRODUCT自动完成求和。之前失败大概率是因为引用区域的行列数不匹配,需确保三个区域完全对齐。
方案3:XLOOKUP+INDEX定位求和
先定位符合双条件的列,再对该列求和:
=SUM(INDEX(B3:Z100,,XLOOKUP(1,(B1:Z1=A13)*(B2:Z2="Hrs Worked"),COLUMN(B1:Z1)-COLUMN(B1)+1)))
- 逻辑:
XLOOKUP找到满足双条件的列的相对位置,INDEX提取该列的工时数据,最后SUM求和。
关键注意事项
- 确保客户名称、"Hrs Worked"文本完全匹配,无空格或大小写差异,可搭配
TRIM()处理,例如将B1:Z1=A13改为TRIM(B1:Z1)=TRIM(A13) - 若同一客户有多列"Hrs Worked",以上方案会自动汇总所有对应列的工时
内容的提问来源于stack exchange,提问作者MS23
相关产品推荐
相关产品推荐

