Excel函数,将最接近的数字返回到零而不进行舍入

时间:2015-02-05 02:01:20

标签: excel excel-formula

我需要一个函数,它从A1到A10的范围内将最接近的值返回到零。

我在其他网站上找到了解决方法但是返回的值四舍五入到无小数位。

出于我的目的,我需要最接近零的值,最多可保留十个小数位。

我尝试过这个公式:

=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它将返回-1而不是-1.0896

我有一个vba程序更改范围内的值。因此,将最接近的值保存为零的vba解决方案将起作用。

1 个答案:

答案 0 :(得分:2)

当我使用您问题中的解决方案似乎有效时,它不会将-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))}

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

{=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它是一个数组。