我需要一个函数,它从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解决方案将起作用。
答案 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它是一个数组。