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

Excel使用UNIQUE函数去重时动态返回同行其他列数据的方法

问题根因

你之前写的匹配公式触发#SPILL!错误的核心原因有两个:

  • 逻辑判断层拿单个单元格A2和整列范围'sheet1'!A:A做等值比较,会返回和整列行数(超100万行)等长的布尔数组,最终IF返回的结果长度远超公式周边可用的连续空白区域,直接触发溢出错误
  • 就算手动缩小引用范围避开溢出问题,这个判断逻辑会把同一载具对应的所有重复行全部返回,根本达不到“每个载具匹配唯一一行关联值”的效果

另外单独给A列做UNIQUE再逐列匹配的思路本身就冗余,动态数组版本的Excel完全支持一次性返回多列动态去重结果,源表增删改数据时结果会自动同步,完全不需要手动操作「删除重复值」功能。

可直接套用的公式方案

根据你的去重规则二选一即可,所有公式只需要在结果表的左上角第一个单元格(比如结果表的A1)输入,按回车后会自动溢出填充所有行、列,不要在溢出区域提前输入任何内容,否则仍会触发#SPILL!错误。

场景1:整行内容完全重复才去重

如果你的判定规则是「A/B/C三列值完全一样的重复行才删除,只要任意一列值不同就保留」,直接用整列范围套UNIQUE即可:

=UNIQUE(sheet1!A:C)

这个公式会自动识别三列里的所有不重复行,动态返回完整结果。

场景2:仅按载具列(A列)去重,保留每个载具首次出现时的关联值

如果你的需求和描述一致——只对A列载具去重,最终只保留Bike、Car、Boat三类载具对应的唯一一行所有人、ID值(默认取源表里该载具第一次出现的行的对应值),用LET+XLOOKUP+HSTACK组合实现,计算效率更高:

=LET(
uniq_vehicle, UNIQUE(sheet1!A:A),
owner, XLOOKUP(uniq_vehicle, sheet1!A:A, sheet1!B:B),
vid, XLOOKUP(uniq_vehicle, sheet1!A:A, sheet1!C:C),
HSTACK(uniq_vehicle, owner, vid)
)
优化提示
  • 以上公式仅支持Excel 365、Excel 2021及以上带动态数组功能的版本
  • 如果不想结果里出现源表数据下方的大量空行,可以先选中sheet1的源数据区域按Ctrl+T转成结构化表,公式里直接引用结构化表的对应列即可,公式会自动适配源表新增/删除的行,不会冗余计算空值
  • 如果需要同一载具匹配最后一次出现的关联值,给XLOOKUP加最后一个参数0,-1即可,比如XLOOKUP(uniq_vehicle, sheet1!A:A, sheet1!B:B,,0,-1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:33:31