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

Excel O365:基于两列去重、排序并关联提取完整数据的非VBA方案

按姓名+工艺去重并保留最新记录的Excel公式方案

核心解决方案(兼容多数Excel 365版本)

用LET函数整合多步骤逻辑,避免重复计算,最终输出包含姓名、工艺、订单号、日期的完整最新记录:

=LET(
    rawData, FILTER(WelderQualifications[[Employee Name]:[Date Performed]], {1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1}),
    nameCraft, CHOOSECOLS(rawData, 1, 2),
    dates, CHOOSECOLS(rawData, 4),
    uniqueGroups, UNIQUE(nameCraft),
    latestDates, BYROW(uniqueGroups, LAMBDA(x, MAX(FILTER(dates, (INDEX(nameCraft,,1)=INDEX(x,1))*(INDEX(nameCraft,,2)=INDEX(x,2)))))),
    FILTER(rawData, BYROW(rawData, LAMBDA(row, (INDEX(row,1)&INDEX(row,2)&INDEX(row,4))=XLOOKUP(INDEX(row,1)&INDEX(row,2), BYROW(uniqueGroups, LAMBDA(y, INDEX(y,1)&INDEX(y,2))), BYROW(HSTACK(uniqueGroups, latestDates), LAMBDA(z, INDEX(z,1)&INDEX(z,2)&INDEX(z,3))))))
)

公式拆解

  • rawData:复用你原有的FILTER公式,提取目标4列数据
  • nameCraft:提取前两列(姓名+工艺)作为去重分组的唯一依据
  • dates:单独提取日期列,用于筛选每组的最新记录
  • uniqueGroups:生成姓名+工艺的所有唯一组合
  • latestDates:针对每个唯一组合,筛选出对应组的所有日期并取最大值(即最新日期)
  • 最终FILTER:遍历原始数据的每一行,通过拼接姓名+工艺+日期,匹配对应唯一组合的姓名+工艺+最新日期,留下符合条件的完整行

简化方案(仅适用于Excel 365最新版本,支持GROUPBY函数)

如果你的Excel支持GROUPBY函数,公式可以更简洁:

=LET(
    rawData, FILTER(WelderQualifications[[Employee Name]:[Date Performed]], {1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1}),
    GROUPBY(CHOOSECOLS(rawData,1,2), rawData, LAMBDA(x, XLOOKUP(MAX(CHOOSECOLS(x,4)), CHOOSECOLS(x,4), x)), 0, 0)
)

逻辑说明

  • 按姓名+工艺(前两列)分组
  • 对每组数据,用MAX找到最新日期,再通过XLOOKUP定位到该日期对应的完整行
  • 最后输出所有分组的最新完整记录

注意事项

  • 确保日期列是标准日期格式(不是文本),否则MAX函数无法正确识别先后顺序
  • 如果同一姓名+工艺下存在多条相同最新日期的记录,上述公式会保留所有匹配行;若需仅保留一条,可在XLOOKUP中添加额外判断条件(比如取最小订单号)

内容的提问来源于stack exchange,提问作者Muffinman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:49:57