Excel中基于日期按类型分组且仅统计Active状态的排名列添加方法
Excel分组排名问题解决方案
你的原公式错误在于缺少了按Type分组的条件,导致统计时会把不同Type的Active记录也算进去,所以排名不符合预期。
正确公式(基础版:同日期并列排名)
假设你的列对应:A=Status,B=Date,C=Type,在D2单元格输入以下公式,下拉填充:
=IF(A2="Active", COUNTIFS(A:A,"Active", C:C,C2, B:B,"<="&B2), "")
公式逻辑:
- 先判断当前行Status是否为Active,是则计算排名,否则返回空值
COUNTIFS同时满足三个条件:- Status列等于"Active"
- Type列和当前行Type一致(实现分组)
- Date列小于等于当前行Date
- 统计结果就是当前行在同Type的Active记录中,按Date升序的排名(相同Date的记录会得到相同排名)
进阶版:同日期按行顺序排名(无并列)
如果需要相同Date的同Type Active记录按出现顺序排名(不并列),可以用以下公式:
=IF(A2="Active", COUNTIFS(A:A,"Active", C:C,C2, B:B,"<"&B2) + COUNTIFS(A:A,"Active", C:C,C2, B:B,B2, ROW(B:B),"<="&ROW(B2)), "")
逻辑说明:
- 先统计同Type中Date小于当前行的Active记录数
- 再加上同Type同Date中,行号小于等于当前行的Active记录数
- 最终得到按行顺序的唯一排名
示例验证
比如你的数据如下:
| Status | Date | Type |
|---|---|---|
| Active | 2023-01-01 | X |
| Active | 2023-01-02 | X |
| Inactive | 2023-01-03 | X |
| Active | 2023-01-01 | Y |
| Active | 2023-01-01 | Y |
用基础版公式得到的Rank列结果:
| Rank |
|---|
| 1 |
| 2 |
| 1 |
| 1 |
用进阶版公式得到的Rank列结果:
| Rank |
|---|
| 1 |
| 2 |
| 1 |
| 2 |
内容的提问来源于stack exchange,提问作者Learner27
相关产品推荐
相关产品推荐

