|
楼主 |
发表于 2018-4-5 09:40
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
二,find与search两个函数的常用查找手段
未单独说明的2个函数均可实现,仅列find公式
1,找对应字符第1次出现的位置(以下例子均在字符串"a1a222a3a4a55a6666"中找"a")
=find("a","a1a222a3a4a55a6666")
最基础的查找方式,其中search支持通配符,而且通常3参被习惯性缺省
2,找对应字符第2次出现的位置
=find("a","a1a222a3a4a55a6666",find("a","a1a222a3a4a55a6666")+1)
使用了find的3参,如果次数较高套嵌次数多不建议使用,请使用第3种查找思路
3,找对应字符第n次出现的位置
=find("#",substitute("a1a222a3a4a55a6666","a","#",N))
使用一个源数据未出现的字符,借助substitite的4参替换进行查找来达到效果,其他一些特殊次数查找也可使用
4,找对应字符最后1次出现的位置
=count(find("a","a1a222a3a4a55a6666",row(1:99)))
使用了find3参性质实现,且count的优点之一为忽略错误值,是find与search的好搭档
5,找第1个单字节字符的位置(仅searchb)
=searchb("?",字符串)
利用searchb这类函数对单字节字符与双字节字符的区别对待且支持通配符的能力实现的特殊应用
6,找第1个数字的位置
=min(find(row(1:10)-1,字符串&5^19))
7,找第1个英文字符的位置(区分大小写,适合find,不区分换成search)
=AGGREGATE(15,6,FIND(CHAR(ROW(65:90)),字符串),1)
8,find与search的拖油瓶
在6中使用了 &5^19 的方式避免find产生错误值,因为这个值包含所有10个数字
除此外 1/17 , &原查找内容 等方式均常用于find和search的容错,避免产生错误值影响后续计算
9,计字符串中数字的不重复个数
=COUNT(FIND(ROW(1:10)-1,12345321))
利用find与search基本用法只找第1次出现的位置的方式与count配合进行不重复计数
10,计字符串中不重复的字母个数(忽略大小写)
=COUNT(SEARCH(CHAR(ROW(65:90)),"abAcdeBbcE"))
11,计字符串中双字节字符的个数(数据源无空格)
=COUNT(FIND(" ",MIDB("任意汉字fanzheng凑数",ROW(1:50),1)))/2
利用midb这类函数对双字节字符提取时只提取1个字符返回空格的方式进行计数
12,计字符串中指定内容的连续最大数量
=COUNT(FIND(REPT(1,ROW(1:50)),"1112112312341111432112"))
遍历的思路
13,计字符串从右往左以1开头的连续1的个数
=COUNT(FIND(RIGHT("1112112312341111432111",ROW(1:50)),REPT(1,50)))
和上面几个思路类似,利用遍历方式获取结果 |
|