【问题标题】:Sum Formula acts weird when added text to it向其添加文本时,求和公式的行为很奇怪
【发布时间】:2015-01-16 08:12:44
【问题描述】:

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

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

我仔细检查了值,似乎没有任何问题...问题不是由通过宏创建公式引起的,同样的问题出现在手动执行。 我调查了使用“For Next”循环添加时,末尾的那些“99999999”出现在第 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

【问题讨论】:

    标签: excel sum worksheet-function


    【解决方案1】:

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

    =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
    

    结果是:

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

    至于为什么会发生这种情况,根据Microsoft's documentation,Excel 在幕后使用标准 IEEE754 数据类型,众所周知,这些数字没有有无限精度。

    为什么当你附加一个字符串时它似乎工作,我不知道。当您不强制将类型强制为字符串时,也许 Excel 在最后(可能基于输入数据特征)会进行一些更智能的总和。

    无论如何,显式四舍五入似乎可以解决这个问题,因此,作为一个实用主义者/现实主义者,我会接受它。

    【讨论】:

    • ...但是为什么会出现这些错误?我的数字、输入方法或内容有什么问题吗?对我来说,看起来一切都完成了,但结果仍然不令人满意。
    • 试图弄清楚,因为这对不丢失任何数字很重要 - 财务工作......
    • @lowak,添加 120 多个值会给您带来十亿分之一捷克克朗的错误。除非你要加起来超过一万亿的值,否则你可能是安全的 :-) 无论如何,我总是明确地在财务电子表格中四舍五入(我建议你也这样做) ,只是为了安全。我不依赖单元格显示格式。
    • 对,它有效。我只是想知道它为什么会发生。这些数据是从特殊表格中导出的。此表格不允许在昏迷后插入超过 2 位数字。所以我真的很惊讶看到这个。您的 anwser 为我的问题提供了解决方案,但我会再等一会儿,看看是否有人知道这背后的原因。
    • @lowak,查看更新,我在 MS 自己的网站上找到了一些详细信息,详细说明了他们内部使用的格式。
    【解决方案2】:

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

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

    会显示

    36286.54 CZK
    

    【讨论】:

    • 有趣,非常有趣。我喜欢它:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多