当前位置: 代码迷 >> Office >> 设置了小数精度的单元格数据,怎么转成字符型,并保留末尾的0呢
  详细解决方案

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

热度:528   发布时间:2013-02-26 00:00:00.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
  相关解决方案