ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 人贵于自省

[讨论] 文本数字的大小比较的运算机制

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-13 21:51 | 显示全部楼层
祝洪忠- 发表于 2013-10-13 21:45
CODE(K2)=CODE(LEFT(K2))=CODE(1)
code的帮助中说 返回文本字符串中第一个字符的数字代码。

如果是数值,1和10的数字代码也是一样啊,并且如果是按CODE得出的代码来排序的话,code(1)得出的结果明显大于CODE("1")啊,而CODE(")是无法得出代码的

TA的精华主题

TA的得分主题

发表于 2013-10-13 21:54 | 显示全部楼层
人贵于自省 发表于 2013-10-13 21:39
大家再看看我发的这个附件,用CODE码排序的话,明显不符合逻辑啊

QQ图片20131013214948.jpg
按图中所示,排序看一下,会是什么样的结果。

对于文本字符的大小,按照首字符的code进行排序,首字符code相同的,按第二个字符的code排序,以此类推。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-10-13 21:56 | 显示全部楼层
CODE()函数只计算字符串第一个字符的机器码。
你再做一个:
A1:A20设置为数字格式,输入1-20数字。
B1:B20设置为文本格式,输入1-20数字。
分别选中A1:A20、B1:B20排序,其中,B列排序会弹出提示框,点选“分别将数字和文本形式存储的数字排序”就会发现:A列排序正常,B列排序:1、10、11、12、13……、19、2、20、3、4、5、6、7、8、9

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-13 22:22 | 显示全部楼层
多谢各位老师讲解!学习到了

TA的精华主题

TA的得分主题

发表于 2013-10-13 22:35 | 显示全部楼层
人贵于自省 发表于 2013-10-13 22:22
多谢各位老师讲解!学习到了

路過順便講一下
如果是漢字的比較的話就比較複雜
不過也是從第一個字、第二個字…往下比

但是這個排序牽涉到語言系統的問題,而且也不能完全以code當做判準
如果想要深入理解的話可參考下篇:
[讨论] “座”是不是最大的文本?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-10-14 18:20 | 显示全部楼层
丢丢表格 发表于 2013-10-13 21:32
中国 、中华   这两个词,用 CODE 是相等的。
请问到底哪个大??

code只返回字符串中第一个字符的码值。

TA的精华主题

TA的得分主题

发表于 2013-10-15 10:18 | 显示全部楼层
准确地说应该是:

逻辑值 > 文本 > 数值

1. 逻辑值中顺序为:
  #N/A > #VALUE! > #REF! > #DIV/0! > TRUE > FALSE

含义为:
#N/A  公式计算产生逻辑错误
#VALUE! 公式计算返回错误值
#REF!  公式引用错误
#DIV/0! 除以零错误
TRUE    逻辑判断结果为“真”→ 逻辑计算值=1
FALSE    逻辑判断结果为“伪”→ 逻辑计算值=0


2. 文本比较时,一般说:
a. 按照字符从左至右的先后顺序进行逐位比较
b. 汉字或其它非Asc字符>大写英文字符[A]>小写英文字符[a]>文本数值字符[1]>下划线[_]>空格[ ]

就文本数值1-12的比较来说,有:
1<10<11<2<3<4<5<6<7<8<9

其中 10、11排在2-9前面因为其首位字符是[1]
而1、10、11的比较是因为第2个字符分别是 空格[ ]<[0]<[1]


…………
3. 数值比较那就很好理解了。说明举例略。








评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-10-15 10:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 香川群子 于 2013-10-15 10:51 编辑

补充:

英文字符排序时,可以选择区分大小写或不区分大小写。

但即使选择了区分大小写,顺序仍是按照字母顺序来的。


即  a<A<b<B<c<C ……这样子。

另外,排序是:
英文字母>文本数值>常用符号

或者说是 常用符号<文本数值<英文字母<非Asc字符(汉字或其它语言字符)

[']<[-]<[ ]<[!]<["]<[#]<[$]<[%]<[&]<[(]<[)]< <[,]<[&#65380;]<[.]<[&#65377;]<[/]<[:]<[;]<[?]<[@]<[[]<[]]<[^]<[_]<[`]<[{]<[|]<[}]<[~]<[&#65378;]<[&#65379;]<[+]<[<]<[=]<[>]<[\]<
(这些符号的排序,并非按照CODE值的排序。应该是固定排序。)

<[0]<[1]<[2]<[3]<[4]<[5]<[6]<[7]<[8]<[9]<

<[a]<[A]<<[B]<[c]<[C]<[d]<[D]<[e]<[E]<[f]<[F]<[g]<[G]<[h]<[H]<<[I]<[j]<[J]<[k]<[K]<[l]<[L]<[m]<[M]<[n]<[N]<[o]<[O]<[p]<[P]<[q]<[Q]<[r]<[R]<<[S]<[t]<[T]<<[U]<[v]<[V]<[w]<[W]<[x]<[X]<[y]<[Y]<[z]<[Z]

点评

老师说可以选择区分大小写或不区分大小写?那么如何选择呢  发表于 2013-10-15 10:41

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-15 10:49 | 显示全部楼层
香川群子 发表于 2013-10-15 10:18
准确地说应该是:

逻辑值 > 文本 > 数值

老师,再向你请教一下,这个错误值的大小,运用什么去判断,还是就是规定,那么#NUM!,######,#NULL!,#NAME?和其他比较又是怎么样啊?

TA的精华主题

TA的得分主题

发表于 2013-10-15 10:56 | 显示全部楼层
排序时是否区分英文字母的大小写选项,在排序命令对话框中,点选选项按钮后第2项可勾选。


VBA代码语句:
MatchCase:=False 为不区分大小写,
MatchCase:=True 为区分大小写。


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 22:35 , Processed in 0.037621 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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