ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 函数与公式 > 哪些函数的参数为小数时会自动取整?

哪些函数的参数为小数时会自动取整?

作者:绿色风 分类: 时间:2022-08-17 浏览:215
楼主
chrisfang
当使用小数作为参数的函数时,对小数参数处理比较特殊的情况有两个:Large函数和Small函数。
Large函数当其第二参数为小数时,这个参数会自动向上取整参与运算,比如第二参数为1.2,在函数运算中则会以2代入运算。例如:
  1. =Large({1,2,3,4,5},1.2)

公式返回结果为4。但需要注意的是,当其第二参数小于1或大于数组个数时,会返回错误值。例如:
  1. =Large({1,2,3,4,5},0.2) 并不等价于 =Large({1,2,3,4,5},1)

此时第二参数并不能取整为1参与计算,而是直接返回错误值。又如:
  1. =Large({1,2,3,4,5},5.2)

由于第二参数超过了数组个数5,公式返回错误值。

与Large函数有类似特性的是函数Small,通常情况下,Small函数的第二参数为小数时,会自动对其进行向下截断取整,仅取其整数部分参与运算。例如:
  1. =Small({1,2,3,4,5},1.6)
公式返回结果为1。但当Small函数的第二参数小于1或大于数组个数时,同样会返回错误值。例如:
  1. =Small({1,2,3,4,5},5.2)
并不能等价于
  1. =Small({1,2,3,4,5},5)
公式直接返回错误值。

除了这两个比较特殊的函数以外,其他还有没有类似的现象?
大多数函数在表示“个数”、“位置”、“位数”等等通常都以整数形式出现的参数中,都可以使用小数作为参数而不会出现错误值或异常数据,Excel会对小数参数进行向下取整,取其取整以后的结果参与计算。这些函数包括:Char、Date、Month、Year、Edate、Eomonth、Roundup、Rounddown、Trunc、Round、Fixed、Vlookup、Hlookup、Offset、Choose、Index、Isodd、Iseven、Lcm、Left、Right、Mid、Replace、Substitute、Find、Search等等。例如:
  1. =DATE(2009.4,12.5,1.11)

这些函数中,与前面的Large函数和Small函数的情况有所不同,他们即使小数部分超过了参数的限制范围,但只要整数部分有效,整个函数就能返回正确结果。例如:
  1. =Index(A1:A5,5.5)
这个公式不会像上面Large、Small函数一样因为第二参数的大小超过第一参数的个数而返回错误值,而是仍旧能够返回A5的数值。又如:
  1. =Choose(29.4,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29)
在2003版本中,Choose函数的选择项个数最大为29个(2007版本中增加到254个),虽然这里的第一参数超过了29,但由于Excel忽略小数部分的存在,还是可以返回正确结果。

其中特别需要提到的是Offset函数,当它的第2~5参数为负数的小数时,同样会将参数进行向下取值后参与运算。例如:

  1. =Offset(A3,-1.2,0)

得到的结果是A1单元格的引用,与公式=Offset(A3,-2,0)结果相同。


了解以上这些内容有什么用?当你使用函数嵌套,以公式运算结果作为以上这些函数的数值参数时,是否需要预先对运算结果进行取整或舍入处理,就可以根据上面这些函数特性来判断了。
2楼
apolloh
“取整”应该包括向上和向下取整,所以进位取整和舍尾取整应该都可以称为“取整”。
3楼
gvntw
补充一下:
还有很多函数会自动取整,如LEFT RIGHT MID LEFTB RIGHTB MIDB SUBSTITUTE OFFSET等。
应该注意的是:取整是用TRUNC函数,而不是INT函数,如:=OFFSET(A3,-1.9,0),结果返回A1单元格,而不是A2单元格。
4楼
chrisfang
感谢gvntw版主关于Offset函数使用负小数的测试,之前没有想到负数的情况,如此看来,Offset函数中的小数参数确实有向下取整的特性。

感谢黄版主和建发版主的讨论意见,在写这个主题之前,我基本上把所有可以使用数值参数的函数都测试了一遍,原以为会发现一些与Large函数有类似特性的函数,没想到一圈看下来,竟然Large是如此特殊。
我在原帖中也列出了Left、Right、Index、Offset函数等可以使用小数参数的函数,但我一开始觉得他们的参数还算不上是“取整”,只不过是Excel没把小数放在眼里,完全忽略了小数的影响。而Large和Small函数的情况有些不同,他们的小数尾数会直接对函数结果产生比较大的影响。
经过黄版主的意见和建发版主对Offset使用负参数的测试,我觉得还是同意两位意见,把其他这些函数也归为参数自动取整的类型比较好。由此修改了顶楼的文字,希望大家有不同意见的继续讨论。
5楼
wangqilong1980
收藏慢慢学习。越学习,越发现自已的无知!
6楼
wjc2090742
  1. =ADDRESS(1.7,3.6,4)


补充一个ADDRESS,上面的公式可以正常返回C1。
7楼
laowuwyx
收藏学习!
8楼
qinhuan66
谢谢分享
9楼
382224811
学习了
10楼
rongjun
学习了!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap