You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中将表格含日期单元格提取为可排序单列并实现去重倒序?

如何在Excel中将表格含日期单元格提取为可排序单列并实现去重倒序?

我刚好搞定这个需求啦,多亏了nkalvi的思路启发!下面是调整后的公式,能把表格里分散的日期单元格提取出来,整理成按时间倒序排列、自动去重的关联数组(我对原公式做了小修改,去掉了重复项):

=LET(
dates_, IF(ISBLANK(Dates[[1巡目]:[11巡目]]), NA(), Dates[[1巡目]:[11巡目]]),
no_dates, LAMBDA(row_,
    COUNTBLANK(INDEX(Dates[[1巡目]:[11巡目]], row_, )) = 11
),
loc_header, "名前",
date_header, "日付",
idx, SEQUENCE(ROWS(dates_)),
date_and_loc_0, REDUCE(
    {"Loc","Date"},
    idx,
    LAMBDA(acc,cur,
        IF(
            no_dates(cur),
            acc,
            LET(
                dates_to_col, TOCOL(INDEX(dates_, cur, ), 2),
                loc, INDEX(Dates[名前], cur, 1),
                loc_col, EXPAND(loc, ROWS(dates_to_col), , loc),
                VSTACK(acc, HSTACK(dates_to_col, loc_col))
            ))
    )
),
date_and_loc, DROP(date_and_loc_0, 1),
filtered_unique, SORT(FILTER(date_and_loc, ISNUMBER(INDEX(date_and_loc, , 1))), 1, -1),
unique_loc_and_date, UNIQUE(filtered_unique)
)

简单说下核心逻辑,方便你理解和调整:

  • 用LET定义一系列变量,让整个公式结构更清晰,后期修改也方便
  • dates_:把原表格中「1巡目」到「11巡目」区域的空值转为NA(),方便后续过滤无效内容
  • no_dates:自定义了个小函数,用来判断某一行是否所有日期单元格都为空,直接跳过这类无数据的行
  • 通过REDUCE循环每一行,搭配TOCOL把每行的有效日期转成单列,再用EXPAND把对应的「名前」(姓名)重复对应次数,最后用VSTACK把所有行的结果合并成完整的两列数据
  • 最后先过滤掉非日期的无效值,再按日期降序排序,最后用UNIQUE去掉重复的条目

备注:内容来源于stack exchange,提问作者user2289877

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 13:09:38