文章目录
前言
工作中总会有一些麻烦的问题想要用一套公式解决,在度娘查询到答案后,这些让人眼前一亮的公式总是一用就忘,下次继续度娘,这就很不高效了,因此从今天开始做总结记录,一遍更好地掌握知识。
注:标题先后顺序只是因记录顺序不同而这样,每个标题下的内容都可以看做独立内容。
一、EXCEL 公式实现多个条件值匹配
场景模拟:当我需要将某一行的连续区域内的单元格作为条件去匹配对应区域内的值,并将在指定的目标区域返回所得的匹配结果作为文本拼接起来形成一个新的字符串。
模拟数据如下:
期望结果如下:
直接上伸手党公式:
=SUBSTITUTE(TEXTJOIN("",TRUE,IF((TRANSPOSE($A$1:$E$100)=TRANSPOSE(L2:P2),""),TRANSPOSE($F$1:$J$100),)),0,"")
然后数组三键
公式解析:
拿如下数据举例。
1.TRANSPOSE()是将区域转置的函数,可将EXCEL中的区域当做矩阵来看,这里TRANSPOSE()主要作用是调整返回结果的顺序,作用解释完下面的原理再提。
2.TRANSPOSE($A$1:$E$100)=TRANSPOSE(L2:P2)返回的是一个100 X 5(跟区域的行列数一样)的一个只有TRUE,FALSE的逻辑矩阵,设为A。
如下所示
博主学渣,忘了这种求出0,1(FALSE,TRUE相当于0,1)的方式在矩阵里叫什么了,大概就是这个原理,嗯…
3.将TRANSPOSE($F$1:$J$100)设为矩阵B,那么IF函数可转化为IF(A,B,"")。而EXCEL中关于IF()函数的定义为:
判断是否满足一个条件:如满足返回一个值,如果不满足返回另一个值。
把他转化为矩阵去理解,其实际效果相当于A*B,结果为TRUE的返回B原来的对应的值,结果为FALSE的返回空白值""(空白可以看做一个值,也就是空白值"")。
如下所示:
4.再用TEXTJOIN()将结果进行拼接,这里注意了,TEXTJOIN是按行拼接的,那要是不转置,那按图中的结果那就是TEXTJOIN("",TRUE,{“置物架”,"","",“4格”,""},{"",“铁网”,“白色”,"",""},{"","","","",""},{"","","","",""},…,{
{"","","","",""}}) = 置物架4格铁网白色,但我的需求是将结果按级数的顺序进行拼接,也就是一级分类在结果字符串中的第一个,二级分类在结果字符串中的第二个…以此类推,将这个需求转为图中就是要想办法按列拼接,但TEXTJOIN只能按行拼接,那我们换个思路,我们将结果转置一下,那原来的列不就变成行了吗?那么此时进行的按行拼接其实际效果就相当于我们需要的按列拼接。
公式应用注意事项:
1.条件、条件区域、结果区域列数要一致,可以观察公式中的几个区域,都是五列(当然也可以其他的相同列数)。
2.条件区域、结果区域的行数要一致,且不能太长。本人随机测试了下,一万行是可以的,更多行的区域需要使用者自主发现和调节。
二、EXCEL 工作薄下SHEET表太多时你可以这样做
场景模拟:
1.根据单元格对应的名称批量生成对应SHEET表,且保持表头一致。
2.有一个数据总表,有大量的SHEET子表,想要快速定位到指定的SHEET表。
1.生成多个相同表头的SHEET表
1.1.批量生成SHEET表
1.首先打开我们Excel,将我们要新建工作表的名称粘贴复制进Excel单元格中
2.选中所有的名称,然后选择菜单栏“插入-数据透视表”,显示出了的那个继续选择“数据透视表”,如图