求Excel公式:上方单元格为特定名称时统计对应天数
Excel特定名称对应工作日统计的正确公式
你的原公式存在两个问题:
- OFFSET函数参数错误:
OFFSET(D6:J6,-1,0,0)中高度设为0会返回无效空范围,需将高度设为1(对应一行数据),宽度匹配目标列数; - COUNTIF无法直接嵌套数组判断式,需要改用支持多条件计算的函数。
正确公式示例
假设你要统计当前行(如D6:J6)中,上方单元格为"Name 1"的列里非空单元格的数量(即对应工作日天数),可以使用以下两种公式:
方法1:SUMPRODUCT函数(通用适配任意列数)
=SUMPRODUCT((OFFSET(D6:J6,-1,0,1,COLUMNS(D6:J6))="Name 1")*(D6:J6<>""))
OFFSET(D6:J6,-1,0,1,COLUMNS(D6:J6)):定位到当前行上方的同列范围;(...)="Name 1":筛选出上方单元格是目标名称的列;*(D6:J6<>""):同时筛选当前行中该列非空的单元格;- SUMPRODUCT会自动将符合双条件的单元格计数相加。
方法2:COUNTIFS函数(更直观的多条件统计)
=COUNTIFS(OFFSET(D6:J6,-1,0,1,7),"Name 1",D6:J6,"<>")
- 这里的
7对应D6到J6的列数(共7列),如果列数不固定,可替换为COLUMNS(D6:J6); - COUNTIFS分别指定两个条件:上方单元格为"Name 1",当前行单元格非空,直接返回符合条件的数量。
如果你的"工作日天数"是指单元格为日期且属于工作日,可将D6:J6<>""替换为WEEKDAY(D6:J6,2)<6(WEEKDAY函数返回1-5代表工作日),修改后的SUMPRODUCT公式如下:
=SUMPRODUCT((OFFSET(D6:J6,-1,0,1,COLUMNS(D6:J6))="Name 1")*(WEEKDAY(D6:J6,2)<6))
内容的提问来源于stack exchange,提问作者user3275900
相关产品推荐
相关产品推荐

