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确认。
所以我们只需将SMALL
的k
从2
更改为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 - 在同一个列表中查找最接近的值的主要内容,如果未能解决你的问题,请参考以下文章