Excel:如何返回项目首个未100%完成的活动行值
嘿,这个需求我熟!要在Excel的D列自动返回每个项目首个未100%完成的活动,我给你分两种Excel版本的解决方案,都是经过验证的实用公式:
针对Excel 365/2021(动态数组版本)
如果你用的是支持动态数组的Excel版本,直接在D2单元格输入下面的公式,它会自动填充整列:
=BYROW(A:A,LAMBDA(x, IF(x="","", IF(COUNTIF(A:A,x)=COUNTIFS(A:A,x,C:C,100%), "全部完成", INDEX(B:B,MATCH(1,(A:A=x)*(C:C<>100%),0)) ) ) ))
公式逻辑拆解:
BYROW(A:A,LAMBDA(x,...)):遍历A列的每个项目名x- 先判断x为空时返回空值,避免填充无效行
COUNTIF(A:A,x)=COUNTIFS(A:A,x,C:C,100%):检查该项目的所有活动是否都已100%完成,如果是,返回「全部完成」- 否则用
INDEX+MATCH组合,找到第一个符合项目名且完成率≠100%的活动内容
针对旧版Excel(非动态数组版本)
如果是旧版Excel(比如2019及更早),需要用数组公式,步骤如下:
- 在D2单元格输入公式:
=IF(COUNTIF($A$2:$A$100,A2)=COUNTIFS($A$2:$A$100,A2,$C$2:$C$100,100%),"全部完成",INDEX($B$2:$B$100,MATCH(1,($A$2:$A$100=A2)*($C$2:$C$100<>100%),0)))
- 输入完成后,按住Ctrl+Shift+Enter三键结束输入(数组公式会自动加上大括号)
- 下拉D2单元格填充到所有数据行
注意点:
- 把公式里的
$A$2:$A$100、$B$2:$B$100、$C$2:$C$100替换成你实际的数据区域,不要用整列(比如A:A),不然会拖慢Excel运行速度 - 如果项目名存在大小写或空格差异,需要用
EXACT函数精准匹配,把$A$2:$A$100=A2改成EXACT($A$2:$A$100,A2)
额外提示
如果某个项目所有活动都已完成,公式会返回「全部完成」,你可以根据自己的需求修改这个文本(比如改成空值或其他提示语)。
内容的提问来源于stack exchange,提问作者Leonel Romero
相关产品推荐
相关产品推荐

