学会函数思维,Excel其实很简单,多列数据一键去重!

我是拉小登,一个爱梳头的 Excel 老师。
今天来讨论一个函数公式的问题。
多列姓名怎么提取姓名唯一值?
往常写文章,开头我都会长篇大论导入场景,今天直接开门见山,用 QA 笔记法简单明了的,讲解这个问题背后的函数思维。
▋问题描述
多列姓名怎么提取姓名唯一值?
提问人:拉小登 Dony

回答人:拉小登老师
解决函数问题就 3 个步骤:
❶ 梳理思路
❷ 编写公式
❸ 公式说明

梳理思路
先别着急写公式,先梳理这个问题的解决思路,我想到了下面几个步骤:
▋去重方法
Excel 中常用的删除重复的方法有:
❶ 删除重复值。【放弃】这个是手动操作,不能自动更新。
❷ UNIQUE 函数。【可行】用公式一键提取唯一值。
但是 UNIQUE 函数,只能对单列内容处理。
所以在这一步之前,需要先想办法,把多列姓名,合并成一列。

▋多列合并成一列
目前我掌握的方法有下面几个:
❶ 使用文本连接符&。【放弃】
因为需要一个一个引用单元格,效率太低。
❷ TEXTJOIN 合并文本,然后拆分。【可行】
就是把所有单元格的内容,合并成一个字符串,然后拆分成列表的形式。

❸ TOCOL 多列合并。【可行】
这是一个 Office365 的函数,更加简单实用。
综上所述,可以用实用两种方法,实现这个效果。
接下来挨个验证一下。

编写公式,方法 1
▋编写公式
公式如下:
=UNIQUE(FILTERXML(""&TEXTJOIN("",1,A2:D8)&"","a/b"))

公式说明:
首先是 TEXTJOIN 函数的使用说明。

下面是 FilterXML 的使用说明。

最后是 UNIQUE 函数的使用说明。

再来看原始的公式:
=UNIQUE(FILTERXML(""&TEXTJOIN("",1,A2:D8)&"","a/b"))
❶ 首先是合并文本
使用 TEXTJOIN 函数用把单元格的内容合并成一个字符串。
使用这个奇怪的分隔符,目的是为了构建 xml 数据文本。
TEXTJOIN("",1,A2:D8)
在合并后的文本两端,把标签补全,得到规范的 xml 文本。
""&TEXTJOIN("",1,A2:D8)&""
❷ 拆分文本
然后使用 FilterXML 来提取 a/b 路径下的文本,实现文本拆分。
FILTERXML(""&TEXTJOIN("",1,A2:D8)&"","a/b")
提取的结果如下,实现的多列数据的合并。

❸ 提取唯一值
最后,数据合并成一列后,再用 UNIQUE 函数提取唯一值。
=UNIQUE(FILTERXML(""&TEXTJOIN("",1,A2:D8)&"","a/b"))
最终实现了多列唯一值提取的目标。


编写公式,方法 2
▋编写公式
filterxml 是一个比较古老的函数,没有 xml 基础的话,看的一头雾水。
目的其实就是用 TEXTJOIN+FILTERXML 实现多列数据的合并。Office365 提供了一个 TOCOL 函数,可以轻松实现相同的效果。
还是一样的思路,公式如下:
=UNIQUE(TOCOL(A2:D8,1))

公式说明:
TOCOL 函数使用说明如下:

再来看原始的公式:
=UNIQUE(TOCOL(A2:D8,1))
❶ 多列数据合并
使用 TOCOL 函数,把 A2:D8 区域的多列数据合并起来,合并的时候忽略空白单元格。
=TOCOL(A2:D8,1)
合并结果如下:

❷ 提取唯一值
数据合并成一列后,用 UNIQUE 函数提取唯一值就可以了。
=UNIQUE(TOCOL(A2:D8,1))
这样就完成了多列去重,简单吧!


总结一下
▋函数思维
所谓函数思维,其实就是做好问题的拆解,把大问题拆解成小问题,再把小问题翻译成单个的函数,然后组合起来解决问题。
所有的问题解决思路都是这样的,不是吗?
学习函数思维,和学习数学差不多,需要通过大量的练习来积累经验:
❶ 梳理思路。掌握一定多的阶梯方法,梳理思路。
❷ 编写公式。扎实的公式基础,能把思路翻译成函数公式。
❸ 函数说明。理解函数的运行原理,出错后能自己排除错误。
如果你想学习更多的 Excel 知识,Get 函数思维,推荐参加《秋叶 Excel 3 天集训营》。
即使你是零基础小白,也能带你轻松入门,掌握 Excel 秘籍,使数据呈现更清晰直观,让领导更喜欢。
每天学习大概 30 分钟,3 天时间,你也有可能成为 Excel 高手!
专业讲师、贴心助教、上进学员,都在等你哦~
秋叶《3 天 Excel 集训营》
原价 99 元
现在 仅需 1 元
报名即送
【35 个常用函数说明】
赶紧扫码预约吧!
👇👇👇

*广告