Excel数字格式。将我的单元格视为一个数字但仅保留其格式! (即尾随0)

时间:2011-06-27 15:13:38

标签: excel excel-vba excel-2007 vba

我(似乎应该是)一个简单的问题。我需要能够告诉excel(在vba中)单元格的内容是数字,但我真的不想对它应用任何格式。我需要我的尾随零点如何。我错过了一些非常简单的东西吗?

更新

我从查询中获取xml数据并将其放入电子表格中。但是让我们说其中一个单元格589.950000我需要为用户显示那些额外的零(不要问我为什么,他们只是想要精度)但是excel将它转换为589.95。我还需要他们能够在该单元格上进行电子表格计算(因此我无法将其格式化为文本)。

更新2:

进一步澄清。假设我有4个值,我将放入一列

595.56000
15.00
90.00050
1919.120000000

我可以应用一种数字格式来显示那些确切的数字吗?

5 个答案:

答案 0 :(得分:1)

您无法使用一种自定义格式执行此操作。

您可以做的是创建一个为您输入的宏,并在将值放入其中时修改每个单元格格式。您可以使用宏记录器来处理从哪里开始。

答案 1 :(得分:0)

您的意思是您希望将单元格的值用作数值,但是您不想更改单元格的实际值?

在vba中,您可以使用CInt(yourvar)将字符串转换为数字。因此,您获得的值肯定是一个整数。

[edit] 顺便说一句,如果要将值显示或设置为具有所需格式的单元格,可以使用Excel vba的Format ( expression, [ format ] )功能

[编辑2]

由于你无法预测你将拥有多少个零,我看不到任何可行的数字格式。 Lance Robert建议你最好使用文本格式。要在文本单元格上使用公式,可以使用VALUE公式转换单元格以将其用作数字。如果您在某个范围内需要它,则可能必须使用数组公式,如下所示:{=SUM(IF(ISTEXT(A1:A4);VALUE(A1:A4);A1:A4))}

如果您需要有关这些公式的帮助,请告诉我们。

此致

最高

答案 2 :(得分:0)

我认为你可以做到:

Val(Range("A1").Value)

将文本评估为数字

答案 3 :(得分:0)

如果您知道所需的小数位数,可以使用以下内容:

Range("A1").NumberFormat = "0.000000"

我想你甚至可以看中并检查代码中的尾随0的数量,并根据需要调整格式。

更新:

这是一个VBA函数,它将数字作为字符串并返回相应的NumberFormat字符串。

Private Function trailing(strNum As String) As String
'From number entered as string, returns Excel Number format to preserve trailing zeroes in decimal.
Dim decpt As Integer
Dim aftdec As Integer
Dim strTmp As String

decpt = InStr(strNum, ".")
If decpt = 0 Then
    strTmp = "0"
Else
    aftdec = Len(strNum) - decpt
    strTmp = "0."
    If aftdec <> 0 Then
        For i = 1 To aftdec
            strTmp = strTmp & "0"
        Next
    End If
End If
trailing = strTmp
End Function

答案 4 :(得分:0)

不敢相信我偶然发现了这个...

我知道它已经过时但也可以给出非常简单的答案:

自定义格式,只需使用@符号即可。将被视为整数,并完全按照键入到单元格中。