使用Excel主要就是做表格,表格自然离不开数字,特别是对于会计专业的,每天都要处理大量的表格,大量的数字。
Excel为了方便使用者,对于单元格的格式是非常的开放的,数字不但可以作为加减乘除用的常规数字,还可以作为文本。很多新手都会碰到数字存储格式上造成的问题,因为没有注意到数字真正存储的格式。
1、数字的两种存储格式
要判断一个数字是常规的数字还是文本,最简单的判断是:
2、“眼见为虚”
Excel为了尽量方便操作,对于这些格式都是非常的包容的,很多公式在处理以文本形式存储的数字的时候,也会自动转换。
这也就导致很多Excel的使用者对于数字的存储非常的不在意,因为不管是常规的数字还是文本,都可以正常的进行加减乘除,完全不用太过关心。
但是在某些函数使用的时候,比如VLookup函数,如果要查找的数据和查找范围内的数据是不同存储格式,VLookup函数会返回错误。很多新手就会用Ctrl+F的查找框去查找,然后会非常不理解VLookup函数,明明看见用Ctrl+F的查找框能找到的东西,函数却返回错误!
3、数字格式转换
数字的两种存储格式,在Excel里都有它的用处,常规的数字就不用说了,表格里到处都是这些数字。
文本形式存储的数字也有它的用处,比如身份证号码,如果以常规形式输入的话,你会发现超过了15位后,数字都变为了0,这是因为Excel只能保留16位的有效数字,所以要存储超过了15位的数字,就必须使用文本格式。
在Excel里,假如有一列常规的数字,你想把它转换为文本形式存储的数字,你可能会这样去操作:
可事实上,这个东西还是“眼见为虚”的,它仅仅是看起来变化了,实际内部存储的还是数字,必须进入编辑状态,再回车才行,这个时候就会出现那个小三角!
反之也是一样的。
对Excel熟悉的人会使用分列功能来完成数字与文本的转换,用VBA来实现转换功能自然也没有问题:
首先在customUI.xml中增加代码:
<menu id="rbmenuNumber" label="数字处理 " size="large" imageMso="FormattingUnique">
<button id="rbbtnText2Num" label="文本转数字" onAction="rbbtnText2Num" imageMso="CombineCharacters"/>
<button id="rbbtnNum2Text" label="数字转文本" onAction="rbbtnNum2Text" imageMso="WrapText"/>
</menu>
回调函数:
Sub rbbtnText2Num(control As IRibbonControl)
Call MRange.Text2Num
End Sub
Sub rbbtnNum2Text(control As IRibbonControl)
Call MRange.Num2Text
End Sub
函数实现:
Sub Text2Num()
Dim selectRng As Range
Dim arr As Variant
'确保选中的是单元格
If TypeName(Selection) = "Range" Then
Set selectRng = Selection
'设置单元格为常规格式
selectRng.NumberFormatLocal = "G/通用格式"
'读取单元格数据,Excel会根据数据的特点自动转换格式
arr = selectRng.Value
selectRng.Value = arr
End If
Set selectRng = Nothing
End Sub
Sub Num2Text()
Dim selectRng As Range
Dim arr() As Variant
Dim i As Long, j As Long
'确保选中的是单元格
If TypeName(Selection) = "Range" Then
Set selectRng = Selection
'设置单元格为文本格式
selectRng.NumberFormatLocal = "@"
If selectRng.Cells.Count > 1 Then
arr = selectRng.Value
For i = 1 To UBound(arr)
For j = 1 To UBound(arr, 2)
'将数据转换为文本
arr(i, j) = VBA.CStr(arr(i, j))
Next
Next
selectRng.Value = arr
Else
selectRng.Value = VBA.CStr(selectRng.Value)
End If
End If
Set selectRng = Nothing
End Sub
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有