【问题标题】:Excel Match Function Returns Row Outside the Lookup ArrayExcel 匹配函数返回查找数组之外的行
【发布时间】:2017-06-26 09:43:49
【问题描述】:

我在 Microsoft Excel 中应用 MATCH 函数时遇到问题。

我已经习惯了使用INDEX-MATCH 组合并且以前从未遇到过这样的问题。

问题是MATCH 函数返回的行号在查找数组之外。

输入数据可能看起来有点复杂:

  • A 列包含以 10 分钟为间隔的日期时间(例如:08.03.2016 00:00、08.03.2016 00:10、08.03.2016 00:20、dd.mm.yyyy hh:mm)。
  • B 列包含查找数组,由与每个日期时间相关的不同值集组成。

列表很长,B 列不是唯一的结果值列,这也是我创建一些命名范围的原因。

有问题的函数是:

=MATCH(E37;INDEX(MainData;MATCH(E18+E19;DateSelector;0);COLUMN(hex1_cur)):INDEX(MainData;MATCH(E21+E20;DateSelector;0);COLUMN(hex1_cur));1)

命名范围在哪里:

  • MainData = 所有日期时间和结果单元格,大约为 A4:D2000
  • DateSelector = 日期时间单元格(动态数组,确认 A 列中的单元格数量)。
  • hex1_cur = 结果列的标识符,在本例中指示列 B

E18+E19 形成评估期的开始日期时间,E21+E20 标记结束点。

E37 具有查找值,如您所见,我使用 match_type 1,因为我想找到小于或等于我的查找值的最大值。

为什么该功能在屏幕截图的第一个评估期有效(公式在D38),但在下一个评估期(E38)不再有效?

请注意,主 MATCH 搜索的查找数组部分中的 INDEX-MATCH 数组工作正常,因此故障不应该在我的命名范围内。

我在此工作表中也将这个完全相同的结构用于其他目的,到目前为止它是正确的。

那么我的公式中的主 MATCH 函数如何返回 INDEX-MATCH-restricted 查找数组之外的行号?

在这个测试用例中,INDEX-MATCH 查找数组会生成从行187 到行309 的准确位置结果,但结果行号是39,如E38 中的图片所示。

相反,D38 公式的结果行61 准确地位于其自己的INDEX-MATCH 定义的查找数组中:

对于不清楚的解释,我深表歉意。请询问您是否没有正确理解情况。

【问题讨论】:

    标签: arrays excel excel-formula match excel-match


    【解决方案1】:

    混淆在于您对Match 函数结果的解释。结果是不是行号,而是相对于提交的数组参数开头的位置。

    在此测试用例中,INDEX-MATCH 查找数组从第 187 行到第 309 行产生准确的位置结果 - 但结果行号为 39

    本例中的结果 39 表示第 225 行;即距离数组开头39处。

    【讨论】:

    • 非常感谢!所以直到现在我对 match 函数的整个功能都有一个相当尴尬的误解——我猜我早期的应用程序恰好对这种现象免疫。第 225 行确实具有正确的值。太棒了!
    • @Jaakko 是的,以前您只使用完整的列,例如 Index(A:A, Match(1, B:B, 0))。在这些情况下,结果的两种解释是相同的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多