Excel多列区域提取唯一值至单列:{=OFFSET(UNIQUE(A1:C10);0;0)}公式失效求助
提取多区域唯一值到单列的正确解法
你用的{=OFFSET(UNIQUE(A1:C10); 0; 0)}无效,是因为UNIQUE(A1:C10)返回的是二维数组(原区域是3列,结果也呈多列形式),OFFSET无法将二维数组转换为单列输出。下面分版本给出可行方案:
适用于Office 365/Excel 2021及以上版本(动态数组)
直接用TOCOL函数扁平化数组,再提取唯一值(顺序可互换):
在E1单元格输入:
=TOCOL(UNIQUE(A1:C10), 1)
- 第二个参数
1用于忽略空值,按回车后公式会自动溢出到E列下方,生成所有唯一值的单列列表,无需手动下拉或数组输入。
适用于旧版Excel(无动态数组功能)
用数组公式组合实现,在E1单元格输入以下公式,然后按Ctrl+Shift+Enter(数组输入后公式会自动添加大括号),之后下拉公式直到出现#NUM!错误为止:
=INDEX($A$1:$C$10,SMALL(IF(MATCH($A$1:$C$10,$A$1:$C$10,0)=ROW($A$1:$C$10)*100+COLUMN($A$1:$C$10),ROW($A$1:$C$10)*100+COLUMN($A$1:$C$10)),ROW(A1))/100,MOD(SMALL(IF(MATCH($A$1:$C$10,$A$1:$C$10,0)=ROW($A$1:$C$10)*100+COLUMN($A$1:$C$10),ROW($A$1:$C$10)*100+COLUMN($A$1:$C$10)),ROW(A1)),100))
原理:通过MATCH标记每个值首次出现的位置,再用SMALL按顺序提取这些位置,最后用INDEX定位对应单元格的值。
内容的提问来源于stack exchange,提问作者uelf1
相关产品推荐
相关产品推荐

