求助:提取最近10个已结束项目对应日期(解决重复日期匹配问题)
提取最近10个已结束项目的对应日期并计算平均时长
核心问题修正
你之前使用的INDEX+AGGREGATE公式存在语法错误(括号不匹配、参数逻辑缺失),导致下拉填充时报错。针对重复结束日期无法匹配不同行的问题,需要加入计数逻辑跳过已返回的记录。
提取对应日期的正确公式
假设数据范围为第2行到第999行,可使用以下公式:
提取对应开始日期(A列)
在空白单元格(如D2)输入,下拉填充10行:
=INDEX(A:A, AGGREGATE(15, 6, ROW($2:$999)/(($C$2:$C$999=LARGE($C:$C, ROW(A1)))*($C$2:$C$999<>"")), COUNTIF($D$1:D1, LARGE($C:$C, ROW(A1)))+1))
提取对应中期日期(B列)
在相邻单元格(如E2)输入,下拉填充10行:
=INDEX(B:B, AGGREGATE(15, 6, ROW($2:$999)/(($C$2:$C$999=LARGE($C:$C, ROW(A1)))*($C$2:$C$999<>"")), COUNTIF($E$1:E1, LARGE($C:$C, ROW(A1)))+1))
公式逻辑说明
LARGE($C:$C, ROW(A1)):获取第N个最近的结束日期,下拉时ROW(A1)自动递增,对应第1至第10个目标日期($C$2:$C$999=LARGE(...))*($C$2:$C$999<>""):筛选出符合目标结束日期且非空的行号,排除C列空白项COUNTIF($D$1:D1, LARGE(...))+1:针对重复结束日期,统计当前已返回的相同日期数量,让AGGREGATE取第N个匹配行,避免重复返回第一行
计算各阶段平均时长
假设提取的10组日期在D2:D11(开始)、E2:E11(中期)、F2:F11(结束,可通过LARGE($C:$C,ROW(A1))提取):
- 开始到中期的平均时长:
=AVERAGE(E2:E11 - D2:D11) - 中期到结束的平均时长:
=AVERAGE(F2:F11 - E2:E11) - 总项目周期平均时长:
=AVERAGE(F2:F11 - D2:D11)
Excel 365/2021 简化方案
如果使用支持动态数组的版本,可直接提取最近10个已结束项目的完整数据,无需手动下拉填充:
=TAKE(SORT(FILTER(A:C, C:C<>""), 3, -1), 10)
公式说明:
FILTER(A:C, C:C<>""):筛选出C列非空的已结束项目SORT(..., 3, -1):按C列(结束日期)降序排列TAKE(...,10):提取前10行数据
内容的提问来源于stack exchange,提问作者Thijs
相关产品推荐
相关产品推荐

