Excel中对重复患者仅取最后实例的「Dizziness」数值求和方法咨询
解决重复患者仅取最后一条记录的Dizziness数值求和问题
针对你的需求——对C2:H6区域内的「Dizziness」数值求和,且重复患者仅保留最后一条记录计算,我提供两种实用方案,适配不同Excel版本:
方案1:兼容所有Excel版本的SUMPRODUCT公式
假设你的数据结构是:
- A列(A2:A6)为患者姓名
- C列(C2:C6)为症状名称(标记「Dizziness」)
- D列(D2:D6)为对应症状的数值
你可以使用以下公式:
=SUMPRODUCT((ROW(A2:A6)=MAXIFS(ROW(A2:A6),A2:A6,A2:A6))*(C2:C6="Dizziness")*D2:D6)
公式逻辑拆解:
MAXIFS(ROW(A2:A6),A2:A6,A2:A6):为每个患者姓名找到其最后一条记录所在的行号(最大行号)ROW(A2:A6)=...:判断当前行是否为该患者的最后一条记录,返回布尔值后自动转换为1(符合)或0(不符合)(C2:C6="Dizziness"):筛选出症状为「Dizziness」的记录,同样转换为1/0- 三者相乘后求和,最终得到仅包含每个患者最后一条Dizziness记录的数值总和
如果你的「Dizziness」数值直接在C2:H6区域内(比如该区域单元格值为数值,对应的症状标记在其他列),只需调整公式中的列引用即可。
方案2:Excel 365/2021 专属动态数组方案
如果你使用的是支持动态数组的Excel版本,这个公式会更简洁直观:
=SUM(XLOOKUP(UNIQUE(A2:A6),A2:A6,D2:D6,"",0,-1))
公式逻辑拆解:
UNIQUE(A2:A6):提取所有不重复的患者姓名XLOOKUP(...,0,-1):从数据区域从后往前查找每个唯一姓名对应的最后一条记录的Dizziness数值SUM:将这些筛选后的数值直接求和,一步得到结果
验证示例
假设你的数据如下:
| 患者姓名 | 日期 | 症状 | 数值 |
|---|---|---|---|
| Test2 | 2024-01-01 | Dizziness | 5 |
| Test2 | 2024-01-02 | Dizziness | 7 |
| Test2 | 2024-01-03 | Dizziness | 10 |
| Test3 | 2024-01-01 | Dizziness | 3 |
| Test3 | 2024-01-02 | Dizziness | 5 |
使用上述任意公式,都会得到预期结果15(Test2最后一条的10 + Test3最后一条的5),完美排除了重复患者的非最后记录。
内容的提问来源于stack exchange,提问作者James324
相关产品推荐
相关产品推荐

