求Excel公式:基于CareID与金额生成列C对应值
解决CareID重复时的金额显示需求
核心逻辑
需要同时满足两个判断条件:
- 若B列对应金额为$0,C列显示空值或0
- 若B列金额不为0,仅保留该CareID首次出现对应的金额,重复行显示空值或0
适用公式
通用版本(兼容所有Excel版本)
在C2单元格输入以下公式,下拉填充即可:
=IF(B2=0,"",IF(COUNTIF($A$2:A2,A2)=1,B2,""))
公式说明:
COUNTIF($A$2:A2,A2):统计从A2到当前行的CareID出现次数,首次出现时结果为1- 外层
IF先判断B列是否为0,是则返回空值;否则通过内层IF判断是否为首次出现,是则返回B列金额,否则返回空值
如果需要显示0而非空值,把公式里的""替换成0即可:
=IF(B2=0,0,IF(COUNTIF($A$2:A2,A2)=1,B2,0))
Excel 365/2021 优化版本
利用XMATCH函数更高效判断首次出现:
=IF(B2=0,"",IF(XMATCH(A2,$A$2:A2)=1,B2,""))
XMATCH(A2,$A$2:A2)会返回当前CareID在A2到当前行中的首次匹配位置,首次出现时结果为1,逻辑和通用版本一致。
为什么SUMIFS、UNIQUE不适用?
- SUMIFS:用于多条件求和,无法判断当前行是否为CareID的首次出现,无法实现"仅保留首次值"的需求
- UNIQUE:仅能提取唯一的CareID列表,无法和原数据行对应匹配,无法直接生成对应每行的显示结果
内容的提问来源于stack exchange,提问作者user23319943
相关产品推荐
相关产品推荐

