首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 办公应用 > OFFICE教程 >

设置了小数精度的单元格数据,怎么转成字符型,并保留末尾的0呢

2012-03-20 
设置了小数精度的单元格数据,如何转成字符型,并保留末尾的0呢?设置了小数精度的单元格数据,如何转成字符型

设置了小数精度的单元格数据,如何转成字符型,并保留末尾的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)))

或许还有简单方法,没时间想了。
[解决办法]

VB code
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 

热点排行