在 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 时出错的主要内容,如果未能解决你的问题,请参考以下文章