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 它是一个数组。
我需要一个函数,它 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 它是一个数组。