【问题标题】:Two column lookup in table array using INDEX and MATCH使用 INDEX 和 MATCH 在表数组中查找两列
【发布时间】:2015-10-08 08:12:46
【问题描述】:

我希望 excel 使用 INDEXMATCH 显示具有两个匹配单元格 com_cddiv_cd 的表数组中的值。

我尝试了以下公式,但没有成功。

=INDEX(K9:K53,MATCH(K3,I9:I53,0),MATCH(K4,J9:J53,0)) 

这是根据com_cddiv_cd 给出所需结果的 excel 工作表屏幕截图

【问题讨论】:

    标签: excel excel-formula excel-match


    【解决方案1】:

    尝试使用数组公式 (CTRL + SHIFT + ENTER) 而不是 Enter

    =INDEX(K9:K53,MATCH(K3&K4,I9:I53&J9:J53,0),1)
    

    未经测试,但应该可以工作。

    稍后将编辑解释我们的公式以及您的公式不起作用的原因。

    【讨论】:

    • 感谢人现在它的工作。请稍后解释你的公式。
    【解决方案2】:

    INDEX function 上的 column_num 参数不能单独提供辅助行条件。您需要一种方法来确保 row_num 参数上的两列匹配,并将 column_num 留空或保留为 1(只有一列在K9:K53)。

    K5 的标准公式应该是,

    =index(K9:K53, aggregate(15, 6, row(1:45)/((i9:i53=k3)*(j9:j53=k4)), 1))
    

    ...或者,

    =index(K9:K53, min(index(row(1:45)+((i9:i53<>k3)+(j9:j53<>k4))*1e99, , )))
    

    单元格区域 K9:K53 共有 45 行。 K9:K53 内的位置将在ROW(1:45) 内。第一个公式强制任何不匹配的行进入 #DIV/0! 错误状态,AGGREGATE¹ function 使用选项 6 忽略错误,同时使用 SMALL sub-function 检索最小的有效条目(例如 15)。第二个公式执行相同的操作,将 1E+99(一个 1 后跟 99 个零)添加到任何不匹配的行,并使用 MIN function 取最小的匹配行。

          


    ¹ AGGREGATE function 是随 Excel 2010 引入的。它在早期版本中不可用。

    【讨论】:

    • 就目前而言,如果被引用的行数发生变化(并非不可能的情况),那么 OP 将不得不重新确定 ROW(1:45) 应该变成的部分。如果将 K:K 传递给 INDEX,而不是 K9:K53,那么 ROW 部分就是 ROW(K9:K53)。而且,一般来说,如果范围是 Range1,那么 ROW 部分就是 ROW(Range1),从而在两者之间提供了一个简单且恒定的关系,如果 Range1 发生变化,无需任何进一步的思考或手动修改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多