返回目录:excel表格制作
EXCEL中的小数精度的问题还是蛮让人困扰的,尤其是财务人员,一分钱都不能差,否则就借贷不平。最典型的场景是做造工资表,做凭证,明明都对上了,可就是有差异。
纳尼?这到底是什么情况?还让不让人愉快地玩耍了?
(图片来源网络)
这背后涉及Excel显示和计算的逻辑,理解了就很好解决。
首先EXCEL显示是按照单元格设置的格式来的,所看到的数字并不是excel真正存储的数据。比如,在单元格B1输入1.3322,如果显示格式里设置的是显示两位小数,则在excel看到的就是1.33,1.33这个数字是1.3322按照四舍五入保留2位小数后的结果。
但是,excel在进行单元格计算时,却是基于excel真正存储的数据计算,比如还有一个单元格B2输入了1.3344,单元格格式也是显示2位,现在B3=B1+B2,如果B3单元格格式也是显示2位,你觉得应该是显示多少呢?
如果你去Excel验证就知道,B3显示的是2.67,因为它是先计算B3=1.3322+1.3344 = 3.6666,然后再进行四舍五入,变成了2.67,而不是 1.33+1.33 = 2.66。
这就是困扰很多财务人员问题,为什么合计就和明细对不上了。
怎么解决呢?有两种办法。
1、让excel在显示时强制调整精度。在 excel选项 — 高级 — 计算此工作薄时,勾选【将精度设为所显示的精度】。
这样excel计算时,会忽略实际精度,按照显示的数据进行计算,前面的示例,B3单元格的数据就变成了2.66。
2、通过函数进行转换。常用的是Round 函数,进行四舍五入,Round(A3,2),第一个参数是需要四舍五入的数值,第二个参数是小数位数。与之类似的函数还有 向上取值RoundUp,向下取值RoundDown,取整Int。
第一种方式很简单很暴力,但会影响整个excel中的数据,并不是所有场景下都适应。第二种方式要复杂一些,但胜在灵活,从财务角度,更多是在用第二种方式,因为财务本就比较严谨要求数据非常精确。
请设置单元格数字格式和数字精度。