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

Error when finding MAX ABS using indirect function in VLOOKUP

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

=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)

任何帮助都会很棒。

您不能转换 max(abs(...)) 并将其用于查找;这只适用于正数。如果第一个失败并显示 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(...))。