Excel - 在同一个列表中查找最接近的值

Posted

技术标签:

【中文标题】Excel - 在同一个列表中查找最接近的值【英文标题】:Excel - Finding nearest value in same list 【发布时间】:2016-07-14 02:09:54 【问题描述】:

我有一个沿路的东西的清单,我正在寻找一个可以告诉我最近的东西在哪里的公式。考虑-

Road  Location (m)   Nearest
0001  0080           0230
0001  0230           0356
0001  0356           0400
0001  0400           0356
0002  0010           0034
0002  0034           0010

“最近”是我想要达到的目标,即对于任何给定的事物,在同一条道路上最近的事物的位置值是多少。

我找到的索引/匹配项接近,但不具有它们在同一条路上的条件,并且不排除当前行。 (Use of INDEX MATCH to find absolute closest value)

我正在使用 Excel 2010。

【问题讨论】:

【参考方案1】:

如果 A1:C1 是标题,那么在 C2:

=INDEX(B:B,MAX(IF(SMALL(IF($A$2:$A$100=A2,ABS($B$2:$B$100-B2)),2)=IF($A$2:$A$100=A2,ABS($B$2:$B$100-B2)),ROW($A$2:$A$100))))

这是一个数组公式,必须用ctrl+shift+enter确认。

如果“道路”只有一个条目,#NUM 也会出错。在这种情况下,请将其包装在 =IFERROR(...,"") 中。除此之外,它应该完全符合您的要求。

编辑

要忽略双精度数(因此永远不会有 0),您可以使用 COUNTIFS 执行此操作,如下所示:

=INDEX(B:B,MAX(IF(SMALL(IF($A$2:$A$100=A2,ABS($B$2:$B$100-B2)),COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,B2)+1)=IF($A$2:$A$100=A2,ABS($B$2:$B$100-B2)),ROW($A$2:$A$100))))

这是一个数组公式,必须用ctrl+shift+enter确认。

所以我们只需将SMALLk2 更改为COUNTIFS($A$2:$A$100,A2,$B$2:$B$100,B2)+1

如果你还有任何问题,尽管问;)

【讨论】:

谢谢。我设法想出了=IF(A2=A1,IF(A2=A3,ABS(MIN(B3-B2,B2-B1)),ABS(B2-B1)),IF(A2=A3,ABS(B3-B2),)),但是我的依赖于按顺序排列的道路ID。 虽然 - 有没有办法让它忽略重复项? IE。如果有两个东西在同一个位置,它会忽略同一个地方的那个,并将位置返回到最近的不在同一个地方的东西?也许是嵌套的 IFNULL? @PeterTomlinson 添加了一个编辑以完全忽略双打;)

以上是关于Excel - 在同一个列表中查找最接近的值的主要内容,如果未能解决你的问题,请参考以下文章

查找最接近未完全排序的列表中的值的项目的索引

在最接近指定日期的列表中查找上一个日期

python:在大整数列表中查找小整数列表的最接近匹配

在排序数组列表中查找2个最接近的先前值和2个最接近的下一个值

获取列表中某个给定数字的3个最接近的值?

用于查找彼此接近的值的 SQL 语句