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

无需宏或VBA,从两列提取唯一值的Excel问题求助

问题分析与解决方法

核心问题

你的公式逻辑框架没问题,但存在两处关键错误导致返回0:一是未按数组公式要求触发运算,二是INDEX函数的参数写法错误,无法正确识别拼接后的区域。

修正方案(分Excel版本)

1. Excel 365/2021(支持动态数组)

直接用UNIQUE函数实现,无需手动下拉,输入后自动溢出填充:

=UNIQUE(Data!$L$1:$L$1000&Data!$M$1:$M$1000)

将公式输入到E2单元格即可,Excel会自动生成所有L、M列拼接后的唯一值列表。

2. 旧版Excel(无动态数组)

需要使用数组公式,输入到E2单元格后,必须按Ctrl+Shift+Enter组合键确认(而非单独按Enter),之后下拉填充即可:

=IFERROR(INDEX(Data!$L$1:$L$1000, MATCH(0, COUNTIF($E$1:E1, Data!$L$1:$L$1000&Data!$M$1:$M$1000), 0))&INDEX(Data!$M$1:$M$1000, MATCH(0, COUNTIF($E$1:E1, Data!$L$1:$L$1000&Data!$M$1:$M$1000), 0)), "")

原公式错误原因

  • INDEX(Data!$L$1:$L$1000&Data!$M$1:$M$1000, ...)写法无效:INDEX的第一个参数不能直接是两个区域的拼接结果,需分别提取对应行的L、M值后再拼接。
  • 旧版Excel中,这类依赖数组运算的公式必须通过Ctrl+Shift+Enter触发,否则只会计算单个单元格,导致匹配失败返回0。

额外优化(排除空白拼接值)

如果L或M列存在空白单元格,会生成空的拼接值,可加入过滤逻辑:

  • Excel 365版本:
    =UNIQUE(FILTER(Data!$L$1:$L$1000&Data!$M$1:$M$1000, Data!$L$1:$L$1000&Data!$M$1:$M$1000<>""))
    
  • 旧版Excel版本:
    =IFERROR(INDEX(Data!$L$1:$L$1000, MATCH(0, IF(Data!$L$1:$L$1000&Data!$M$1:$M$1000<>"", COUNTIF($E$1:E1, Data!$L$1:$L$1000&Data!$M$1:$M$1000), 1), 0))&INDEX(Data!$M$1:$M$1000, MATCH(0, IF(Data!$L$1:$L$1000&Data!$M$1:$M$1000<>"", COUNTIF($E$1:E1, Data!$L$1:$L$1000&Data!$M$1:$M$1000), 1), 0)), "")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 08:17:13