当前位置: 首页 > news >正文

VBA如何快速识别Excel单元格中的文本数字

Excel中一种非常特殊的数字,这些数字看似数字,其实是文本格式(下文简称为文本数字),在单元格的左上角会有一个绿色小三角作为标志,如B1:B3单元格。
在这里插入图片描述

在编程时为什么需要区分普通数字和文本数字呢?先来看以下【立即窗口】种的测试代码。A1和B1单元格内容看似相同,但是测试代码的结果却完全不同。

  • 单元格A1为普通数字,加号之后的"0"被转换为数字零,然后进行加法运算。
  • 单元格B1为文本数字,加号作为字符串连接运算符,合并两个字符串。
?[A1]+"0"
 1 
?[B1]+"0"
10

VBA代码并无法识别单元格坐上角的绿色三角标志,或者说Range对象并没有一个属性值对应这个标志,但是可用通过自定义函数来区分这两种数字格式。

Function IsNumberStoredAsText(Rng As Range) As Variant
    If Not IsNumeric(Rng) Then
        IsNumberStoredAsText = vbNullChar
        Exit Function
    End If
    If Rng.Value + "0" = Rng.Value Then
        IsNumberStoredAsText = vbNo
    Else
        IsNumberStoredAsText = vbYes
    End If
End Function

【代码解析】
第2行代码判断单元格内容是否为数字,如果不是数字则第3行代码返回vbNullChar
第6行代码利用+ "0"运算来判别单元格中数字格式,如果运算结果与单元格的值相等,第7行代码返回vbNo,即单元格内容为普通数字,如果不等,第9行代码返回vbYes,即单元格内容为文本数字。


测试代码如下。

Sub DEMO()
    Dim c As Range, sMsg As String
    For Each c In Range("A1:B4").Cells
        Select Case IsNumberStoredAsText(c)
        Case Is = vbNullChar
            sMsg = "非数字"
        Case Is = vbYes
            sMsg = "文本数字"
        Case Is = vbNo
            sMsg = "普通数字"
        End Select
        Debug.Print "单元格[" & c.Address & "]:" & sMsg
    Next
End Sub

【代码解析】
第3~13行代码循环遍历单元格。
第4~11行代根据自定义函数返回值提供不同的内容。
第12行代码在【立即窗口】中输入结果,如下所示。

单元格[$A$1]:普通数字
单元格[$B$1]:文本数字
单元格[$A$2]:普通数字
单元格[$B$2]:文本数字
单元格[$A$3]:普通数字
单元格[$B$3]:文本数字
单元格[$A$4]:非数字
单元格[$B$4]:非数字

相关文章:

  • 【每日刷题——语音信号篇】
  • AIGC ChatGPT4对Gbase数据库进行总结
  • 网络安全涉及哪些方面?
  • Python大数据之linux学习总结——day11_ZooKeeper
  • Python-----PyInstaller的简单使用
  • wpf devexpress在未束缚模式中生成Tree
  • Python-正则表达式使用
  • Docker命令 常用中间件运维部署,方便构建自己服务
  • 多态语法详解
  • “移动机器人课程群实践创新的困境与突围”素材
  • ArkTS - HarmonyOS服务卡片(创建)
  • 精密云工程:智能激活业务速率 ——华为云11.11联合大促倒计时 仅剩3日
  • 2023年中职“网络安全“—Web 渗透测试②
  • mac上配置maven
  • 计算机网络的性能指标
  • OpenAI内斗剧情反转!微软力保ChatGPT之父回归?
  • 手写消息队列(基于RabbitMQ)
  • 产品运营的场景和运营策略
  • Golang环境搭建Win10(简洁版)
  • Git精讲
  • 中欧金融工作组第二次会议在比利时布鲁塞尔举行
  • 法治课|争议中的“行人安全距离”于法无据,考量“注意义务”才更合理
  • 一手实测深夜发布的世界首个设计Agent - Lovart。
  • 威尼斯建筑双年展总策划:山的另一边有什么在等着我们
  • 外企聊营商|波音速度:创新审批促“起飞”
  • 全国汽车以旧换新补贴申请量突破1000万份