Excel实现疾病发病事件统计:跨周末连续日期计为单次事件
解决方案:Excel统计符合规则的疾病发病事件数
前提准备
先将表格按 name 升序、illness 升序、date 升序排序,确保同姓名同疾病的记录按日期顺序排列。
步骤1:添加辅助列判断新事件起点
假设数据范围为 A2:C100(A列=姓名,B列=疾病,C列=日期),新增辅助列D(如D2单元格),输入以下公式并下拉填充:
=IF(OR(A2<>A1,B2<>B1),1,IF(DATEDIF(C1,C2,"d")<=1,0,IF(AND(DATEDIF(C1,C2,"d")=2,WEEKDAY(C1,2)=5),0,1)))
公式逻辑:
- 若当前行的姓名/疾病与上一行不同,判定为新事件起点,返回1
- 若当前日期与上一行日期差≤1天,判定为同一事件,返回0
- 若日期差为2天且上一行日期是周五(
WEEKDAY(C1,2)=5代表周一为1、周五为5),判定为跨周末的同一事件,返回0 - 其余情况判定为新事件起点,返回1
步骤2:统计每个姓名+疾病的事件总数
新增结果列E(如E2单元格),输入以下公式并下拉填充,即可得到对应姓名和疾病的总发病事件数:
=SUMIFS($D:$D,$A:$A,A2,$B:$B,B2)
也可通过数据透视表快速汇总:将name和illness设为行字段,辅助列D的求和值设为值字段,直接得到统计结果。
注意事项
- 确保
date列是Excel可识别的日期格式,避免公式计算错误 WEEKDAY函数的第二个参数2是关键,若使用其他参数需同步调整周五的判断逻辑
内容的提问来源于stack exchange,提问作者Martin Silberkuhl
相关产品推荐
相关产品推荐

