如何在Excel中基于日期和日期时间两列进行排名
基于日期时间与日期列的Excel分组排名公式
从你提供的数据截图来看,数据包含仅日期的date列和带时分秒的datetime列,需求是在同一date分组内,按datetime从早到晚的顺序生成排名(即每个日期下最早的记录排1,依次递增)。以下是适用的Excel公式:
一、传统兼容公式(适配所有Excel版本)
假设数据从第2行开始:date列在B列,datetime列在A列,排名结果放在C列。在C2单元格输入以下公式后,按Ctrl+Shift+Enter确认(数组公式),再下拉填充:
=SUMPRODUCT(($B$2:$B$100=B2)*(A2<$A$2:$A$100))+1
公式说明:
$B$2:$B$100=B2筛选出当前行同日期的所有记录,A2<$A$2:$A$100统计比当前datetime晚的记录数,加1后得到当前记录在同日期组内的排名(最早的记录统计数为0,排名为1)。
二、动态数组公式(适配Excel 365/2021及以上)
无需下拉填充,公式会自动溢出到整列。在C2单元格输入:
=BYROW(A2:A100,LAMBDA(x,SUMPRODUCT((B2:B100=INDEX(B2:B100,ROW(x)-ROW(A2)+1))*(x>A2:A100))+1))
公式说明:
BYROW遍历每一行的datetime,结合SUMPRODUCT精准统计同日期组内比当前datetime晚的记录数,加1生成分组排名。
三、处理重复datetime的平均排名公式
如果同一日期下存在完全相同的datetime,需要生成平均排名,使用以下数组公式(按Ctrl+Shift+Enter确认):
=SUMPRODUCT(($B$2:$B$100=B2)*(A2<$A$2:$A$100))+(SUMPRODUCT(($B$2:$B$100=B2)*(A2=$A$2:$A$100))+1)/2
内容的提问来源于stack exchange,提问作者Cheng
相关产品推荐
相关产品推荐

