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

大数据量下基于最小Order值筛选分组的Excel公式优化问询

解决方案

一、无辅助列高效提取每组最小Order对应行

针对20万条大数据量,避免使用SUMPRODUCT这类全数组遍历函数,改用Excel 365/2021支持的动态数组函数,计算效率会大幅提升:

方案1:GROUPBY函数(推荐,最简洁高效)

GROUPBY是专门的分组聚合函数,对大数据量优化极佳:

=GROUPBY(D2:D200001, B2:D200001, LAMBDA(x, XLOOKUP(MIN(INDEX(x,,2)), INDEX(x,,2), x)), 0, 1)
  • 参数说明:
    1. D2:D200001:分组依据(姓名列)
    2. B2:D200001:需保留的目标列(国家、Order、姓名)
    3. LAMBDA(x, ...):对每个分组,先提取Order列的最小值,再用XLOOKUP匹配对应整行数据
    4. 末尾0,1:保留分组原始顺序并自动去重

方案2:UNIQUE+XLOOKUP组合(兼容部分旧版本)

若你的Excel不支持GROUPBY,可使用此组合:

=LET(
    唯一姓名, UNIQUE(D2:D200001),
    最小Order值, MINIFS(C2:C200001, D2:D200001, 唯一姓名),
    XLOOKUP(唯一姓名&最小Order值, D2:D200001&C2:C200001, B2:D200001)
)
  • 参数说明:
    1. LET函数定义变量,减少重复计算、提升效率
    2. 先提取唯一姓名列表,再用MINIFS获取每个姓名对应的最小Order值
    3. 用「姓名+Order」作为匹配键,通过XLOOKUP定位对应行的完整数据

二、按姓名分组+Order升序排序

若需最终结果按姓名升序、再按Order升序排列,只需在上述函数外层嵌套SORT:

适配GROUPBY方案:

=SORT(GROUPBY(D2:D200001, B2:D200001, LAMBDA(x, XLOOKUP(MIN(INDEX(x,,2)), INDEX(x,,2), x)), 0, 1), {3,2}, {1,1})
  • 说明:{3,2}表示先按第3列(姓名)排序,再按第2列(Order)排序;{1,1}表示均为升序

适配UNIQUE+XLOOKUP方案:

=SORT(LET(
    唯一姓名, UNIQUE(D2:D200001),
    最小Order值, MINIFS(C2:C200001, D2:D200001, 唯一姓名),
    XLOOKUP(唯一姓名&最小Order值, D2:D200001&C2:C200001, B2:D200001)
), {3,2}, {1,1})

效率对比说明

原方案的SUMPRODUCT会对每一行遍历20万条数据,总计算量达400亿次,资源占用极高;新方案使用的GROUPBY/MINIFS/XLOOKUP均为Excel原生优化函数,计算量大幅降低,大数据量下处理速度显著提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:07:17