案例6:提取特定条件到目标单元格
接上文,在学习函数SEQUENCE函数结合MID函数可以将单元格内的字段一个一个分开后,我就在思考,这应该是一个好思路,以前我在提取特定条件的时候,特别痛苦,如下图中的数据,我需要分析各个颜色分别有多少数量的时候?因为颜色都是单元格内不同位置,无法汇总求和。
【资料图】
数据有几万行的情况下,此时展开思路就是提前建立好颜色的数据库,进行匹配,结合SEQUENCE来使用。
我们录入公式:
=CONCAT(IFERROR(VLOOKUP(MID(B140,SEQUENCE(,LEN(B140)),1),{"黑";"白";"红";"蓝"},1,0),""))
函数解释:
用LEN测量出目标数据的长度=LEN(B140),长度为16
用SEQUENCE函数生16个数字,{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,}
用MID函数分别分开,形成一个数组{"A","B","S"," ","P","A","7","4","7","S"," ","黑","6","9","6","8"}
用VLOOKUP对MID函数分开的数据一一查询,建立一个新查询数组(提前定义好){"黑";"白";"红";"蓝"},找到就返回此颜色,如黑。
用IFERROR屏蔽找不到的数据。
用CONCAT连接起来就可以了。
上面的提前预建数据库的思路非常重要,如信息中包含国家,可以提前把国家提前建好,不过知道原理后,也会出现BUG,出现BUG后要知道如何用新函数或者新的逻辑去避免。建立数组后,再转成内置数组,也就是VLOOKUP的引用区域模块,按一下F9。
因为一个一个提取的,所有当有两种、三种、混色的话就显示如下图所示
如果出现上面的情况不多或者不影响大的原则的话,就手动更改。太多了就需要重建逻辑。目的就是高效。
案例7:生成大小写英文字母
有时候进行连续编号的时候需要用到大写或者小写字母,如果手打的话很慢,也不能直接双击下拉填充,此时结合SEQUENCE的话可以快速生成大小写字母
分别录入公式:
=CHAR(SEQUENCE(26,,65,1))
=CHAR(SEQUENCE(26,,97,1))
如是按行的话,换一下位置就可以了。
=CHAR(SEQUENCE(,26,65,1))
=CHAR(SEQUENCE(,26,97,1))
函数解释:
用CODE判断开始A的代码是65,增量1,66,就是B.....
用SEQUENCE生成26个递增为1的数组
用CHAR转换在大写字母。
未完待续……;
标签: