点击蓝字【秋叶 Excel】
发送【礼包】
免费领办公神器、Office 模板和免商字体!
本文作者:拉登 Dony
本文来源:拉小登(ID:ladengchupin)
本文编辑:竺兰
我是拉小登,一个爱梳头的 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 集训营》
报名即送
【35 个常用函数说明】
赶紧预约吧!
以上内容包含广告
热门跟贴