【问题标题】:Excel - Finding nearest value in same listExcel - 在同一个列表中查找最接近的值
【发布时间】: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。

【问题讨论】:

    标签: excel excel-formula


    【解决方案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 添加了一个编辑以完全忽略双打;)
    猜你喜欢
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2015-07-26
    • 2020-02-13
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    相关资源
    最近更新 更多