【问题标题】:Excel xmatch min AND max valuesExcel xmatch 最小值和最大值
【发布时间】:2022-11-15 08:03:22
【问题描述】:

Excel 公式 XMATCH 有第三个参数,如果被测试的值大于或小于值列表,则返回一个值。我需要它在所有情况下都返回一个数值 - 小于最小值(下例中的 7),在值内(示例中的 1-7)或大于最大值(示例中的 1)。

例子

我试图避免测试 #N/A 的 IF。在这种情况下,XMATCH 的真正用途是在 INDEX 函数内部,使用额外的 IF 逻辑很难读取/调试。

有什么建议么?

【问题讨论】:

  • 所有数字都大于 -1564%,这意味着没有小于或等于该数字的数字,因此出现错误。只要做:IFERROR(XMATCH(....),7) 小于最小值或IFERROR(XMATCH(...),1) 大于最大值。或者因为这些数字真的没有任何意义,只是让它们变得不可能大而不可能小。
  • @ScottCraner - 如果您要将此逻辑应用于一长串数组/表而不是两行 - 那么您如何看待它的工作原理?我的建议如下

标签: excel excel-formula


【解决方案1】:

看不到没有的方法任何错误检查的类型 - 但这是相当简约的:

=SUM(IFERROR(XMATCH(J1,C1:I1,{-1,1}),0))

.


在旁边

请注意,虽然这部分不在您的核心 Q 的范围内,但我认为值得一提的是您可能想要探索其他 Office 360​​ 功能以协助处理冗长/复合功能 - 正如您所暗示的那样。一个优秀的例子。是'let',它允许您预先定义此函数,然后在复合函数中根据需要多次引用它。明显的优点是你只需要检查一次;此外,如果使用得当,它可以大大压缩/缩短复合函数的长度。

这是一个使用上述函数在一个索引中查找结果的示例,如果在第一个索引中找不到,则在第二个索引中查找结果。

=LET(x_,SUM(IFERROR(XMATCH(J1,C1:I1,{-1,1}),0)),IFERROR(INDEX(N$2#,MATCH(x_,M$2#,0)),INDEX(Q$2#,MATCH(x_,P$2#,0))))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多