从Excel中的范围中获取最接近单元格值的值

时间:2019-05-10 15:16:34

标签: excel vba

我想找到一个范围内最接近的值,但不包括该范围内的空白单元格。我设法做到了,但它包括了空白,因为它们被认为是零 这是一个包含空格的作品

=INDEX(B9:GS9,MATCH(MIN(ABS(B9:GS9-D1)),ABS(B9:GS9-D1),0))

我也尝试使用条件“ <>”进行MINIFS,但它会弹出错误窗口。而且除了最终解决方案外,它的VBA代码也很棒。谢谢。

2 个答案:

答案 0 :(得分:0)

使用公式:

=IF((D1-MAXIFS(A:A,A:A,"<"&D1))<(MINIFS(A:A,A:A,">"&D1)-D1),MAXIFS(A:A,A:A,"<"&D1),MINIFS(A:A,A:A,">"&D1))

其中D1是目标值,然后我细分并显示MaxIf() < TargetMinIf() > Target以显示值和目标值的增量。将这些公式合并为上面的单个公式。

enter image description here

请注意,这是基于目标值,并且未使用>=<=,因此,如果目标为0,则空白不会给出值。


编辑1:

修复了上面公式中的一个错误,即我不小心将D3而不是D1列为目标值(没有更新图像)。

我已经看过这个数组了;公式类似,如下所示:

=IF((B11-MAXIFS(A1:H7,A1:H7,"<"&B11))<(MINIFS(A1:H7,A1:H7,">"&B11)-B11),MAXIFS(A1:H7,A1:H7,"<"&B11),MINIFS(A1:H7,A1:H7,">"&B11))

enter image description here


要以您的目标范围(B9:GS9)为前提,并假设D1包含了您的目标值,

=IF((D1-MAXIFS(B9:GS9,B9:GS9,"<"&D1))<(MINIFS(B9:GS9,B9:GS9,">"&D1)-D1),MAXIFS(B9:GS9,B9:GS9,"<"&D1),MINIFS(B9:GS9,B9:GS9,">"&D1))

在对您的范围进行测试时,似乎出现错误,即没有值>目标或值<目标,结果之一为0。我用CountIfs()来解决这个问题...

=IF((D1-If(CountIfs(B9:GS9,"<"&D1),MAXIFS(B9:GS9,B9:GS9,"<"&D1),D1))<(If(CountIfs(B9:GS9,">"&D1),MINIFS(B9:GS9,B9:GS9,">"&D1),2*D1)-D1),MAXIFS(B9:GS9,B9:GS9,"<"&D1),MINIFS(B9:GS9,B9:GS9,">"&D1))

答案 1 :(得分:0)

我在这里尝试过推荐,它仍然返回0。这是结果图像的链接。(不允许我发布图像)

https://i.stack.imgur.com/5IRVa.png