Excel数字格式。 把我的单元格当成一个数字,但不要单独格式化! (即尾随0)

我有(似乎应该是)一个简单的问题。 我需要能够告诉excel(在vba中)一个单元格的内容是数字的,但是我并不想对它应用任何格式。 我需要我的尾随零如何。 我错过了一些令人难以置信的简单?

更新:

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

更新2:

进一步澄清。 比方说,我有4个值,我要把一列

 595.56000 15.00 90.00050 1919.120000000 

是否有一个数字格式,我可以适用于该列将显示这些确切的数字?

你不能用一种自定义格式来做到这一点。

你可以做的是制作一个macros,为你做input,并修改每个单元格的格式,因为它将值放入其中。 您可以使用macroslogging器来处理从哪里开始。

我认为你可以这样做:

 Val(Range("A1").Value) 

这将评估文字到一个数字

你的意思是你想用单元格的值作为数值,但是你不想改变单元格的真实值?

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

[b]如果你想要显示或者设置你想要的格式的单元格的值,可以使用Excel vba的Format ( expression, [ format ] )function

编辑2

因为你不能预测你将有多less零,我看不到任何数字格式,将工作。 你可能会更好地使用文本格式,正如兰斯罗伯特所build议的那样。 要在文本单元格上使用公式,可以使用VALUE公式将单元格转换为数字。 如果你需要一个范围,你可能需要使用像这样的数组公式{=SUM(IF(ISTEXT(A1:A4);VALUE(A1:A4);A1:A4))}

请让我们知道如果你想要这些公式的一些帮助。

问候,

马克斯

如果你知道你需要的小数位数,你可以使用如下所示:

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

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

更新:

下面是一个VBA函数,它将该数字作为string并返回相应的NumberFormatstring。

 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 

不能相信我只是偶然发现了这个…

我知道这是旧的,但不妨给一个非常简单的答案:

自定义格式,只需使用@符号。 将被视为整数,并保持键入到单元格中。