Sum Formula在添加文本时很奇怪

时间:2015-01-16 08:12:44

标签: excel sum worksheet-function

我有一个宏,其中一个命令是创建公式来总结。直到今天有人向我展示问题时,一切都很好。

Sum函数应该给我:36286,54。当函数看起来像这样:=SUM(I7:I128)一切正常但是当我想像这样添加一些文本时:=SUM(I7:I128) & " CZK"它给了我:36286,5399999999 CZK

我仔细检查了值,似乎没有任何错误......问题不是通过宏创建公式引起的,同样的问题似乎是手动执行。 我调查了那些" 99999999"当使用' For Next'添加它时,最后会出现大约50的值。环。 删除一些值会使" 99999999"消失,但我不知道为什么那些。

一切都是在下面的数据上完成的,任何想法出了什么问题?

3 883,60
5 679,75
1 633,05
7 825,67
8 541,85
892,50
313,00
887,44
99,52
277,69
138,84
138,84
138,84
277,69
277,69
138,84
34,71
34,71
34,71
74,30
74,82
130,43
34,72
34,72
212,74
99,52
99,52
149,74
-2,74
212,74
212,74
212,74
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
13,88
34,71
34,71
69,42
31,24
31,24
31,24
31,24
31,24
31,24
31,24
31,24
41,65
41,65
41,65
10,41
10,41
20,83
20,83
20,83
20,83
20,83
13,88
3,47
6,94
15,62
57,10
190,90
10,67
34,71
138,84
138,84
277,69
55,50
34,71
86,78
86,78
166,61
13,88
67,83
117,39
117,39
67,69
62,48
8,68
135,37
104,13
69,42
69,42
14,75
15,62
15,62
15,62
31,24
46,86
62,48
26,10

2 个答案:

答案 0 :(得分:5)

这很可能是因为在积累所有这些价值期间引入的逐渐错误。我怀疑,如果您改为使用:

=SUM(I7:I128) - 36286,54

你得到一个非常小但非零的数字。如果你检查下面的图形,你确实会这样做。要解决这个问题,我建议在加入货币指标之前明确舍入价值:

=ROUND(SUM(I7:I128),2) & " CZK"

这是Excel 2k13中的概念验证。 C单元公式为:

           C
1  =SUM(A1:A122)
2  =SUM(A1:A122) & " CZK"
3  =ROUND(SUM(A1:A122),2) & " CZK"
4  =C1-36286.54

结果是:

enter image description here

因此,您可以从C4看到实际值与显示值之间的误差约为0.00000000008,这个数字的百分比非常小。

对于发生的原因,根据Microsoft's documentation,Excel使用标准的IEEE754数据类型,这是一个众所周知的问题,这些数字不是具有无限的精确度。

为什么当你追加字符串时它似乎有用,我不知道。当您不强制将类型强制转换为字符串时,Excel可能会在最后进行一些更智能的求和舍入(可能基于输入数据特征)。

无论如何,明确的四舍五入似乎解决了这个问题,作为一个实用主义者/现实主义者,我只是顺其自然。

答案 1 :(得分:1)

当您在追加“CZK”时创建文本字符串,而不是舍入我会选择TEXT函数。通过这种方式,您可以准确说明您希望如何显示您的号码:

=TEXT(SUM(A1:A122),"0.00 CZK")

会显示

36286.54 CZK