Excel 数据舍入

内置的 Excel 舍入工具可能会让计算结果看起来不正确,因为 Excel 只能逐个考虑每个单元格的值。thinkcell Excel 数据舍入函数会从整体上考虑计算,并以尽可能减小与精确值偏差的方式进行舍入,同时在数学上可行的情况下,确保使用舍入后的值仍能保持计算正确。

thinkcell round 简介

为报告或 PowerPoint 演示文稿汇总数据时,Excel 中的求和舍入是一个常见问题。通常我们希望舍入后的总计与舍入后各加数的总和完全一致,但这很难实现。例如,请看下表:

Excel 中精确值示例

使用 Excel 的“设置单元格格式”功能将数值舍入为整数后,会得到下表。看起来“计算错误”的总计以粗体显示:

使用 Excel 的“设置单元格格式”功能进行舍入

同样,使用 Excel 的标准舍入函数时,舍入后数值的总计计算是正确的,但舍入误差会不断累积,结果往往与原始数值的实际总计相差较大。下表显示了上述示例使用 =ROUND(x,0) 后的结果。与原始值偏差为 1 或以上的总计以粗体显示:

Excel 函数 ROUND 的使用示例

使用 thinkcell round,您可以在极少“调整”的情况下获得一致的舍入总计:大多数数值会舍入到最接近的整数,少数数值则向相反方向舍入,从而保持计算正确且不累积舍入误差。由于通过更改数值来实现正确舍入总计的方式有很多,软件会选择需要更改的数值数量最少、且与精确值偏差最小的方案。例如,将 10.5 向下舍入为 10,比将 3.7 向下舍入为 3 更合适。下表显示了上述示例的最优方案,其中“调整”过的数值以粗体显示:

thinkcell round 示例

要在自己的计算中实现此输出,只需选择相关的 Excel 单元格区域。然后,在 Formulas 选项卡上点击 image 按钮,并在必要时使用工具栏的下拉框调整舍入精度。

使用 thinkcell round

thinkcell round 可无缝集成到 Microsoft Excel 中,提供一组类似于 Excel 标准舍入函数的函数。您可以使用 Formulas 选项卡中的 thinkcell round 功能区组,轻松将这些函数应用到自己的数据。

Excel 2010 及更高版本中的 thinkcell round 功能区

舍入参数

与 Excel 函数一样,thinkcell 舍入函数需要两个参数:

x

要舍入的值。它可以是常量、公式或对其他单元格的引用。

n

舍入精度。此参数的含义取决于您使用的函数。thinkcell 函数的参数与对应的 Excel 函数相同。示例请参见下表。

thinkcell round 不仅可以舍入为整数值,还可以舍入为任意倍数。例如,如果您想以 5-10-15-... 的步长呈现数据,只需舍入为 5 的倍数即可。使用 thinkcell round 工具栏中的下拉框,直接输入或选择所需的舍入精度。thinkcell round 会为您选择合适的函数和参数。下表列出了一些示例,展示使用工具栏对特定 x 值进行舍入时对应的 n 参数。

x =n =

100

50

2

1

0.01

1.018

0

0

2

1

1.02

17

0

0

18

17

17.00

54.6

100

50

54

55

54.60

1234.1234

1200

1250

1234

1234

1234.12

8776.54321

8800

8800

8776

8777

8776.54

如果数值没有按预期方式显示,请确认 Excel 单元格格式设置为 General,且列宽足以显示所有小数位。

按钮

公式

说明

image

TCROUND(x, n)

让 thinkcell round 决定舍入到两个最接近倍数中的哪一个,以尽量减少舍入误差。

image

TCROUNDUP(x, n)

强制将 x 远离零舍入。

image

TCROUNDDOWN(x, n)

强制将 x 朝零舍入。

image

TCROUNDNEAR(x, n)

强制将 x 舍入到所需精度的最接近倍数。

image

从所选单元格中移除所有 thinkcell round 函数。

image

选择或输入所需的舍入倍数。

image

突出显示所有被 thinkcell 决定舍入到两个最接近倍数中较远一个、而不是最接近一个的单元格。

为了获得最佳结果,并尽可能减少与基础数值的偏差,应尽可能使用 TCROUND。只有在必须时,才使用限制更严格的函数 TCROUNDDOWN、TCROUNDUP 或 TCROUNDNEAR。

注意: 切勿在任何 TCROUND 公式中使用 RAND() 这类非确定性函数。如果函数每次求值都会返回不同的值,thinkcell round 在计算数值时就会出错。

计算布局

上述示例中的矩形布局仅用于演示。您可以使用 TCROUND 函数来确定 Excel 工作表中任意位置分布的求和结果的显示方式。Excel 对其他工作表的三维引用以及指向其他文件的链接也同样适用。

TCROUND 函数的位置

由于 TCROUND 函数用于控制单元格的输出,因此它们必须是最外层函数:

错误:

=TCROUND(A1, 1)+TCROUND(SUM(B1:E1), 1)

正确:

=TCROUND(A1+SUM(B1:E1), 1)

错误:

=3*TCROUNDDOWN(A1, 1)

正确:

=TCROUNDDOWN(3*A1, 1)

如果您输入了类似错误示例的内容,thinkcell round 会通过 Excel 错误值 #VALUE! 提醒您。

thinkcell round 的限制

对于包含小计和总计的任意求和,thinkcell round 始终都能找到解决方案。对于涉及乘法和数值函数的一些其他计算,thinkcell round 也能提供合理的解决方案。但出于数学原因,一旦使用 +、- 和 SUM 以外的运算符,就无法保证一定存在一致舍入的解决方案。

与常量相乘

在许多情况下,当涉及常量乘法时,thinkcell round 能产生良好结果,也就是说,最多只有一个系数来自另一个 TCROUND 函数的结果。请看以下示例:

thinkcell round 中与常量相乘

单元格 C1 的精确计算为 3×1.3+1.4=5.3。将数值 1.4 向上舍入为 2 即可得到此结果:

使用 thinkcell round (TCROUND) 的舍入示例

但是,thinkcell round 只能通过向上或向下舍入来“调整”。不支持与原始值进一步偏离。因此,对于某些输入值组合,无法找到一致舍入的解决方案。在这种情况下,函数 TCROUND 会求值为 Excel 错误值 #NUM!。以下示例展示了一个无解的问题:

thinkcell round 中的不一致舍入

单元格 C1 的精确计算为 6×1.3+1.4=9.2。对单元格 A1 和 B1 进行舍入会得到 6×1+2=8 或 6×2+1=13。实际结果 9.2 无法舍入为 8 或 13,thinkcell round 的输出如下:

thinkcell round 中的 #NUM! 错误

注意: Excel 函数 AVERAGE 会被 thinkcell round 解释为求和与常量乘法的组合。此外,如果同一个加数在求和中出现多次,在数学上等同于常量乘法,因此无法保证一定存在解决方案。

一般乘法和其他函数

只要所有相关单元格都使用 TCROUND 函数,且中间结果仅通过 +、-、SUM 和 AVERAGE 连接,加数以及(中间)总计就会被整合到一个舍入问题中。在这些情况下,如果存在解决方案,thinkcell round 会找到一个能在所有相关单元格中保持一致的解决方案。

由于 TCROUND 是普通的 Excel 函数,因此可以与任意函数和运算符组合使用。但当您使用上述以外的函数来连接 TCROUND 语句的结果时,thinkcell round 无法将各组成部分整合为一个相互关联的问题。相反,公式中的各组成部分会被视为不同的问题并分别独立求解。然后,结果会作为输入用于其他公式。

在许多情况下,thinkcell round 的输出仍然是合理的。不过,在某些情况下,使用 +、-、SUM 和 AVERAGE 以外的运算符,会导致舍入结果与未舍入计算的结果相差很大。请看以下示例:

因公式使用不正确而产生的舍入影响

在此情况下,单元格 C1 的精确计算应为 8.7×1.7=14.79。由于单元格 A1 和单元格 B1 通过乘法连接,thinkcell round 无法将这些单元格中的公式整合到一个共同问题中。相反,在将单元格 A1 识别为有效输入后,单元格 B1 会被独立求值,其输出会在剩余问题中作为常量使用。由于没有进一步约束,单元格 B1 中的值 1.7 会舍入到最接近的整数,即 2。

此时,单元格 C1 的“精确”计算为 8.7×2=17.4。这就是 thinkcell round 现在尝试求解的问题。存在一个一致的解决方案,需要将 17.4 向上舍入为 18。结果如下:

使用 thinkcell round 进行舍入和乘法

请注意,单元格 C1 中的舍入值为 18,与原始值 14.79 相差很大。

排查 TCROUND 公式问题

使用 thinkcell round 时,您可能会遇到两种错误结果:#VALUE! 和 #NUM!。

#VALUE!

#VALUE! 错误表示存在语法问题,例如公式输入错误或参数不正确。另外,请注意使用正确的分隔符:例如,在英文版 Excel 中公式写作:=TCROUND(1.7, 0),而在本地化的德文版 Excel 中则必须写作 =TCROUND(1,7; 0)。

另一个 thinkcell round 特有的错误是 TCROUND 函数调用的位置:不能在另一个公式中使用 TCROUND 函数。请确保 TCROUND 是单元格公式的最外层函数。(请参阅 TCROUND 函数的位置)

#NUM!

#NUM! 错误由数值问题导致。当 TCROUND 函数的输出为 #NUM! 时,表示给定公式集所描述的问题在数学上无解。(请参阅 thinkcell round 的限制)

只要由 TCROUND 函数包围的公式仅包含 +、- 和 SUM,且所有 TCROUND 语句使用相同的精度(第二个参数),thinkcell round 就保证存在并能找到一个解。但是,在以下情况下,无法保证存在一致舍入的解:

  • 公式涉及其他运算,例如乘法或数值函数。此外,同一个加数出现多次的求和在数学上等同于乘法。
  • 你在 TCROUND 函数的第二个参数中使用了不同精度。
  • 你频繁使用特定函数 TCROUNDDOWN、TCROUNDUP 和 TCROUNDNEAR。

你可以尝试重新表述问题,以获得一致的解。请尝试以下方法:

  • 对部分或全部 TCROUND 语句使用更高精度。
  • 不要将 TCROUND 与乘法或除 +、- 和 SUM 之外的数值函数一起使用。
  • 对所有 TCROUND 语句使用相同精度(第二个参数)。
  • 在可行的情况下,使用 TCROUND 代替更具体的函数 TCROUNDDOWN、TCROUNDUP 和 TCROUNDNEAR。

需要排查问题吗?

查看我们的知识库