ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1512|回复: 2

[原创] 函数探索之旅----文本函数与字符系列

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-20 21:14 | 显示全部楼层 |阅读模式
本帖最后由 流浪铁匠 于 2018-4-20 23:58 编辑

从探索与对比char和code函数开始
对于文本函数,找到了很多有意思的发现
这篇作为总结与目录篇,在这里总结一下

1,char与code的恩怨情仇
http://club.excelhome.net/thread-1397754-1-1.html
2,看不见,不代表不存在的不可见字符
http://club.excelhome.net/thread-1397802-1-1.html
3,find与search的悲欢离合(对函数所谓忽略大小写的测试与发现)
  http://club.excelhome.net/thread-1406179-1-1.html
3.5,大大小小,全角半角(大小写/全半角转化函数的探索)
http://club.excelhome.net/thread-1409172-1-1.html
4,镜像字符
http://club.excelhome.net/thread-1406184-1-1.html
5,字符的秘密,永无止境
http://club.excelhome.net/thread-1407514-1-1.html

以下为探索测试时的各种发现:
1,char与code函数不能完全一一转化,也因此造就不可见字符中最大的坑,所谓的char(63),其他还有char(0),char(32),char(128),char(255),都是转化有差异的
语言为中文时code值为63的字符有108万个(有兴趣的自己测试默认语言为英文时的情况,更多,111万+)
a12.jpg

2,unicode编码大于65535的字符,在函数中会出现一些特殊情况:
(1) len结果为2
(2) mid的提取机理与left/right有很大差异(注意是机理,不是方向和位置),前者偏向字符编码,后者趋于字符本身mid提取单个字符时3参为1只能提取半个这种字符,提取的部分可以重组成新字符,而left与right在提取这类字符时为完全提取 a7.jpg
(3) 接(2) 之前的测试已经证明了left/right与mid的临界舍入点不一致
left/right的2参也是之前注意到的0.99999976146501,但mid的2/3参数都是默认取整的

3,clean可以清除char(1-31),char(128)合计32个ANSI字符。
用unicode字符集看是unichar(1-31),unichar(128-159)合计63个unicode字符

trim可以清除(因函数特性,只考虑两端完全清除) char(32),char(129-254)合计127个字符
用unicode字符集看是unichar(32)和unichar(12288)合计2个unicode字符(第2个后期才注意到是空格的全角型)

这2个函数,对不可见字符的清除能力有限
char(1-255)之间的char(127)这1个字符
以及char(65280-65535)这256个code获取代码均为255而unicode对应代码均为63733的字符
clean和trim两个函数都无法清除,更不用说大量code函数结果为63的不可见字符

4,有极少数字符在单元格/编辑栏内是默认右对齐的(普通字符靠左),这些字符对字符串内的字符显示的排列顺序可能造成颠倒
且这部分字符中有2个性质很像镜像的通配符且在match等函数里具有相应通配性的性质(据群友李逸雪测试要先在excel内录入一次这类字符"激活性质")
正是因为这2个字符的特殊性质,我将这部分字符称为"镜像字符"/"手性字符"
a2.jpg

5,unichar(173)这个字符有点奇怪,作为search 1参的时候识别了70+万个字符 a3.jpg
但unichar(1) 更强大
a6.jpg

6,search的忽略大小写性质范围很广,除了英文字母,希腊/罗马/拉丁/西里尔文等字母也可忽略大小写,甚至个别(组)汉字也存在这能力,不考虑上面3和4的2组特殊字符,合计找到1835组这类字符
a4.jpg

7,有8个字符是vlookup自己找不到自己的(已用 ~ 转义测试过,不像通配符的问题)
a5.jpg

8,countif的坑很深,
有3709个unicode字符被countif视为相同
另外除了0-9这10个标准的数字字符外
合计189个字符会被countif/四则运算/text等等函数视为数字(我用了1000+万个countif遍历所有字符找到的这189个字符)
其中包含10个全角的数字,即countif对数字的识别可忽略全半角区别
a8.jpg

9,unichar(1466)是个奇怪的字符,
match与vlookup/searhc等函数查找时自己找不到自己,但unichar(1465)与unichar(7632)却可以识别它
a9.jpg

10,大小写转化函数,lower/upper/proper,lower与proper(非首位字母下)对大写转小写能力相同,合计可转化665个字符
而upper可将633个字符转化为大写,而proper可将675个字符转化为大写(首位字母),两者存在差异
且其中有4个字符在使用proper转大写后可转化回小写,但有38个字符转为所谓大写后不能再使用lower继续转化
另外有26组字符,upper与lower可相互转化,但无论是否处于字符串单词首字母,proper只能把这组字符中的对应大写字母转化为小写
(该条字符繁杂,全部字符请见第3.5期的附件)

11,ASC 与 WIDECHAR 互为逆转换,一共有95组字符可以进行全半角转化且暂时未发现差异

以上11条为以上合计6篇字符系列中对各类文本函数与字符的发现与总结
函数之路漫漫,我相信没发现的东西还有很多
有待大家一起测试与探索,谢谢






a3.jpg

TA的精华主题

TA的得分主题

发表于 2024-3-7 17:25 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-3-10 18:16 | 显示全部楼层
铁匠老师已快4年没有登录论坛了,是否安好?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 20:27 , Processed in 0.036484 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表