在 VLOOKUP 中使用间接函数查找 MAX ABS 时出错

Posted

技术标签:

【中文标题】在 VLOOKUP 中使用间接函数查找 MAX ABS 时出错【英文标题】:Error when finding MAX ABS using indirect function in VLOOKUP 【发布时间】:2017-06-10 07:42:38 【问题描述】:

我正在尝试设置一个工作表,我可以将其用作模板来对数据进行排序、查找特定值并创建图表。对于我正在寻找的最大震级和平均震级值,一切正常。我在所附图像的公式中遇到了问题。以下是完整代码。

=VLOOKUP(MAX(ABS(INDIRECT("J"&P3&":J"&Q3))),INDIRECT("J"&P3&":M"&Q3),4,FALSE)

使用此代码,我在垂直方向上微调最大值,然后返回相应的幅度值。

当我刚刚输入单元格值时,它工作正常(需要很长时间,但它工作正常)但是为了使其快速轻松地应用于其他数据文件(它们在相同的布局中具有相同的数字值但有不同的值)我已将其调整为上述公式。

在 P 和 Q 列中,我找到了我感兴趣的范围的顶部和底部的行,然后将这些值替换到我的工作公式中。

这种方法对平均震级和最大震级很有效,所以我知道它应该有效,但是当使用上面的公式时,它会发现不正确的值。出于某种原因,它会将数组评估为列表中第二个的单个值。

1: evaluated formula before the miss-step (the array that is the range I am looking for)

2: evaluated formula after the miss-step (3.5 which is not close to the maximum absolute value)

任何帮助都会很棒。

【问题讨论】:

【参考方案1】:

您不能转换 max(abs(...)) 并将其用于查找;这只适用于正数。如果第一个 VLOOKUP 因 IFERROR 失败,您需要将处理传递给第二个 VLOOKUP。

与使用数组公式来实现相同的结果相比,使用可以检索绝对最大值的稍微高级的子公式会更好。

此外,非易失性 INDEX 可以替代易失性 INDIRECT。

作为非数组公式,

=iferror(vlookup(max(max(index(j:j, p3):index(j:j, q3)), abs(min(index(j:j, p3):index(j:j, q3)))), index(j:j, p3):index(m:m, q3), 4, false),
         vlookup(-max(max(index(j:j, p3):index(j:j, q3)), abs(min(index(j:j, p3):index(j:j, q3)))), index(j:j, p3):index(m:m, q3), 4, false))

换句话说,如果你找不到 max(abs(...)) 则寻找 -max(abs(...))。

【讨论】:

以上是关于在 VLOOKUP 中使用间接函数查找 MAX ABS 时出错的主要内容,如果未能解决你的问题,请参考以下文章

excel vlookup怎么查找同一列重复数据

Excel的vlookup函数的使用

[欢课] EXCEL怎样运用VLOOKUP函数,与INDEX-MATCH函数进行查找?

如何在一个excel表格中查找与另一个表格对应的数据

vlookup

如何用vlookup不提取第一列内容,而提取最后一列的数据?或用其他函数也行!