如果你想把EXCEL表格的金额列的前3名对应的产品名称合并起来,用顿号分隔开来,显示在一个单元格中,比如:
销售额最高的前3种产品分别是:A、B、C
你会用什么方法来完成这个需求,学员小C告诉我她的方法是按金额降序排列,再一个个手工复制粘贴合并到一个单元格。因为数据一直在变动,用这个方法实现起来会很麻烦,每次数据一更新就又要再重来一次。
想要实现小C的需求,最简单又一劳永逸的方法就是结合OFFICE 365的特色函数来实现。
接下来我以上方这张成绩表为例,来介绍相关的函数。
01 LARGE筛选第几个最大值
首先,用LARGE函数返回出成绩列中第3名的成绩。
LARGE函数语法是:LARGE(数据区域,第几个最大值)
本例中的公式是:=LARGE(B2:B11,3)
02 FILTER筛选符合条件的数据
知道了第3个最大值之后,我们就要筛选出来哪些成绩是大于并等于这个成绩的,这就需要用到Office 365的特色的筛选函数FILTER。
FILTER函数语法是:FILTER(数据区域,筛选条件)
比如我要筛选出来不及格的人员名单,我就可以这样来写公式:
=FILTER(A2:B11,B2:B11<60)
而我们需要筛选的是考试成绩的前3名,就需要把刚刚的LARGE函数嵌套在FILTER函数中。
=FILTER(A2:B11,B2:B11>=LARGE(B2:B11,3))
03 SORT按列排序
虽然已经得到了考试成绩的前3名人员名单,但是成绩列并没有由高到低排序,所以我们还需要再嵌套排序的SORT函数。
SORT函数语法是:SORT(数据区域,排序依据的行或列序号,1升序/-1降序)
本例中我们只需要在刚刚函数的前面增加SORT函数即可。
=SORT(FILTER(A2:B11,B2:B11>=LARGE(B2:B11,3)),2,-1)
04 TEXTJOINE文本合并
最后我们需要把前3名的姓名用顿号隔开,合并到一个单元格中。以往要实现这个需求,我们只能用&连接符一个一个单元格选中,才能进行合并,现在有了TEXTJOIN函数,一次就可以搞定了。
TEXTJOIN函数的语法是:TEXTJOIN(分隔符,TRUE/FALSE是否忽略空单元格,要合并的文本)
本例中的公式是:=TEXTJOIN("、",,D2:D4)
第2个参数默认是忽略空单元格,一般可以省略不写。
这样做好的前3名的名单,可以根据成绩的更新动态更新,比如我现在把第1个人黄建强的成绩修改为100,我一修改完黄建强的成绩,右侧的两个表格的结果就会动态更新。
到此,我们就实现了小C需要的动态显示金额的TOP 3,并把对应的产品名称合并显示在1个单元格中的需求。
到我们遇到一些复杂的公式计算的时候,不要想着一次性把所有的函数全部写出来。拆解需求,从最里层的需求写起,就像玩俄罗斯套娃一样,一层层往外嵌套,你会发现公式嵌套没有你想象中的那么复杂。
网友评论