设置了小数精度的单元格数据,如何转成字符型,并保留末尾的0呢?
设置了小数精度的单元格数据,如何转成字符型,并保留末尾的0呢?
----------------------------------------------------
比如,1.10 本来是 字符信息,不是数值,但是操作员,却用数值型单元格保存了,并且设置了数字2位精度。
我要分出来 1 和 10,我就必须先将 1.10 转成字符型的 1.10 ,但是,我一转就成了 1.1了,末尾的0就消失了。
这列的数据,可以是任意的用 点 分割的字符,如
12.456
1.903
2.300
1.10
以上的字符都是有的。这列也应该是文本列。但是,操作者会将某些个别的单元格,设置成 数值了,且定了小数位。
这就导致,我要将这一整列全部转成字符时,就麻烦了。
正因为,这一列不全部是【文本列】,所以我才需要转换呀。
我的最终目的,是将 点 前后的字符拆分开。
[解决办法]
小数点前的值
=LEFT(A1,FIND(".",A1)-1)
小数点后的值
=MID(A1,FIND(".",A1)+1,RIGHT(CELL("format",A1),1))*(10^(RIGHT(CELL("format",A1),1)-LEN(A1)+FIND(".",A1)))
或许还有简单方法,没时间想了。
[解决办法]
Sub test() Dim objRange As Range Dim objTRamge As Range Dim lngDotPlace As Long For Each objRange In Application.Selection '设置单元格后两列为文本格式 objRange.Offset(0, 1).NumberFormat = "@" objRange.Offset(0, 2).NumberFormat = "@" '判断内容需要为数字,如果有字母等,就不处理了 If IsNumeric(objRange) Then '查找小数点的位置 lngDotPlace = InStr(1, objRange, ".", vbTextCompare) If lngDotPlace > 0 Then objRange.Offset(0, 1).Value = Left(objRange.Text, lngDotPlace - 1) objRange.Offset(0, 2).Value = Right(objRange.Text, Len(objRange.Text) - lngDotPlace) Else End If Else End If NextEnd Sub