本帖最后由 流浪铁匠 于 2019-6-13 12:53 编辑
前面的只是开胃菜,本篇才是正题
第五章 函数进阶篇
利用对相邻字符的判断来定位位置进行提取的可怕思路
非汉字
- =MID(LEFT(A130,SMALL(IF(MMULT(N(MID(A130,ROW($1:$99)+{0,1},1)<"吖"),{2;1})=2,ROW($1:$99),99),F130)),SMALL(IF(MMULT(N(IFERROR((MID(A130,ROW($1:$99)+{-1,0},1)<"吖"),)),{2;1})=1,ROW($1:$99),99),F130),99)
复制代码 汉字
- =MID(LEFT(A130,SMALL(IF(MMULT(N(MID(A130,ROW($1:$99)+{0,1},1)>="吖"),{2;1})=2,ROW($1:$99),99),F130)),SMALL(IF(MMULT(N(IFERROR((MID(A130,ROW($1:$99)+{-1,0},1)>="吖"),)),{2;1})=1,ROW($1:$99),99),F130),99)
复制代码 英文
- =MID(LEFT(A130,SMALL(IF(MMULT(N(ISNUMBER(AREAS(INDIRECT(MID(A130,ROW($1:$99)+{0,1},1)&1)))),{2;1})=2,ROW($1:$99),99),F130)),SMALL(IF(MMULT(N(IFERROR(ISNUMBER(AREAS(INDIRECT(MID(A130,ROW($1:$99)+{-1,0},1)&1))),)),{2;1})=1,ROW($1:$99),99),F130),99)
复制代码 (附件调整时行数变化了,显示的公式没调整,单元格位置自己改下,这篇主要是为了列套路的)
18,未完待续
星爷的"武状元苏乞儿"中,降龙十八掌是只有前17掌的,把这17掌合成一掌就是第18掌,(在此致敬下经典)
这里也是
提取字符的方法和思路太多,永远没有终点
见招拆招,把本文所列的各种思路融会贯通,希望你能自己练成自己的第18掌,谢谢
以上,均为纯函数手段的字符提取
当然,实际工作中,迭代运算,word的替换/vba配合正则表达式/power query的m函数等等
都能实现一些函数很难完成的字符提取问题
本文仅仅列举了一些纯函数思路的解决方式,只为给新手们开拓一些思路,谢谢
|