电脑主机做网站服务器,it行业干什么,php就是做网站吗,免费word模板Excel中一种非常特殊的数字#xff0c;这些数字看似数字#xff0c;其实是文本格式#xff08;下文简称为文本数字#xff09;#xff0c;在单元格的左上角会有一个绿色小三角作为标志#xff0c;如B1:B3单元格。
在编程时为什么需要区分普通数字和文本数字呢#xff…Excel中一种非常特殊的数字这些数字看似数字其实是文本格式下文简称为文本数字在单元格的左上角会有一个绿色小三角作为标志如B1:B3单元格。
在编程时为什么需要区分普通数字和文本数字呢先来看以下【立即窗口】种的测试代码。A1和B1单元格内容看似相同但是测试代码的结果却完全不同。
单元格A1为普通数字加号之后的0被转换为数字零然后进行加法运算。单元格B1为文本数字加号作为字符串连接运算符合并两个字符串。
?[A1]01
?[B1]0
10VBA代码并无法识别单元格坐上角的绿色三角标志或者说Range对象并没有一个属性值对应这个标志但是可用通过自定义函数来区分这两种数字格式。
Function IsNumberStoredAsText(Rng As Range) As VariantIf Not IsNumeric(Rng) ThenIsNumberStoredAsText vbNullCharExit FunctionEnd IfIf Rng.Value 0 Rng.Value ThenIsNumberStoredAsText vbNoElseIsNumberStoredAsText vbYesEnd If
End Function【代码解析】 第2行代码判断单元格内容是否为数字如果不是数字则第3行代码返回vbNullChar。 第6行代码利用 0运算来判别单元格中数字格式如果运算结果与单元格的值相等第7行代码返回vbNo即单元格内容为普通数字如果不等第9行代码返回vbYes即单元格内容为文本数字。 测试代码如下。
Sub DEMO()Dim c As Range, sMsg As StringFor Each c In Range(A1:B4).CellsSelect Case IsNumberStoredAsText(c)Case Is vbNullCharsMsg 非数字Case Is vbYessMsg 文本数字Case Is vbNosMsg 普通数字End SelectDebug.Print 单元格[ c.Address ]: sMsgNext
End Sub【代码解析】 第3~13行代码循环遍历单元格。 第4~11行代根据自定义函数返回值提供不同的内容。 第12行代码在【立即窗口】中输入结果如下所示。
单元格[$A$1]:普通数字
单元格[$B$1]:文本数字
单元格[$A$2]:普通数字
单元格[$B$2]:文本数字
单元格[$A$3]:普通数字
单元格[$B$3]:文本数字
单元格[$A$4]:非数字
单元格[$B$4]:非数字