Excel 函数 returns 最接近零的数字而不四舍五入

Excel function that returns the closest number to zero without rounding

我需要一个函数,它 return 是范围(例如 A1 - A10)中最接近零的值。

我在其他网站上找到了解决方案,但是 returned 的值四舍五入到没有小数位。

为了我的目的,我需要最接近零的值,最多保留十位小数。

我试过公式:

=INDEX(A1:A15,MATCH(SMALL(INDEX(ABS(A1:A15),0,1),COUNTIF(A1:A15,0)+1),INDEX(ABS(A1:A15),0,1),0))

但是,如果说最接近的值是 -1.0896 它将 return -1 而不是 -1.0896

我有一个 vba 程序来更改范围内的值。因此 vba 将最接近零的值保存到变量的解决方案是可行的。

当我从你的问题中使用你的解决方案时,它似乎有效,它不会将 -1.002 舍入为 -1,如果它最接近 0,它会显示 -1.002。但是另一种选择:

它不是很漂亮,但如果您需要它来保留负值,那么这应该可行:

{=IF(MIN(ABS(A1:A25))=MIN(ABS(IF(A1:A25>0,A1:A25,MAX(A1:A25)))),1,-1)*MIN(ABS(A1:A25))}

我认为它唯一不起作用的情况是所有数字都是负数,在这种情况下它会 return 将数字作为正数。我能想到的否定这一点的唯一方法是:

{=IF(MAX(A1:A25)<=0,-1,IF(MIN(ABS(A1:A25))=MIN(ABS(IF(A1:A25>0,A1:A25,MAX(A1:A25)))),1,-1))*MIN(ABS(A1:A25))}

正如我所说,不漂亮但没有 VBA 我想不出更好的解决方案;我喜欢比我聪明的人告诉我更好的方法...

注意 { 大括号表示一个数组公式,您键入时不带括号并按住 Shift + Ctrl 并点击Enter 告诉 Excel 它是一个数组。