【问题标题】:Excel: match two columns and output third ... AND... there are multiple instances in each columnExcel:匹配两列并输出第三个......并且......每列中有多个实例
【发布时间】:2015-10-27 17:28:41
【问题描述】:

处理以前的帖子: Excel match two columns and output third

我在 A 列中的值不是唯一的,在 B 列中的值不是唯一的,但 A 列和 B 列一起产生了唯一的组合:

     A     B     C
1   Red   Car   Result#1

2   Blue  Boat  Result #2 

3   Red   Boat  Result #3

4   Green Car   Result #4

假设我想找到一个匹配项,其中 A 列 = 红色,B 列 = 船,它应该返回 C 列中的相应值,它应该是结果 #3。

使用上一篇文章的解决方案:

=IF(MATCH("Red",A1:A4,0)=MATCH("Boat",B1:B4,0),INDEX(C1:C4,MATCH("Boat",B1:B4,0)),0)

这实际上将返回 B 列中 Boat 的第一个匹配项的值,即结果#2,而不是匹配为真的预期结果#3。

关于如何修改或编写一个函数来指定检索与匹配为真的特定位置相关的信息(不使用 VBA)有什么想法吗?

我已经想到了一种可能的解决方法,即创建另一列将 Col A 和 B 组合成唯一标识符,但我希望避免这种情况。

谢谢!非常感谢它,并对表格格式感到抱歉。我对此还是很陌生。

【问题讨论】:

  • 我将不得不问你是否可以改写你的要求。看来您的问题的第一步已得到回答。根据特定条件(例如红色和汽车)在 C 中组合来自 A 列和 B 列的输入。你在这里问什么?

标签: excel


【解决方案1】:

您可以使用AGGREGATE function 检索两列匹配,以强制任何不匹配的内容进入错误并忽略错误。

      

E6中的公式是,

=IFERROR(INDEX(C$1:C$99,AGGREGATE(15,6,ROW($1:$99)/((A$1:A$99="red")*(B$1:B$99="boat")), ROW(1:1))), "")

您实际上正在使用 AGGREGATE 函数的 SMALL 子函数,因此您可以通过增加 k 参数来获得第二个、第三个等连续匹配。我在上面通过使用ROW(1:1) 来完成此操作,它等于 1,但随着公式的填写,将增加到 2、3 等。

【讨论】:

    【解决方案2】:

    创建第三列是最有效的解决方案。但是,如果您绝对必须避免它,您可以使用这样的复杂公式:

    =INDEX($C$1:$C$6,MATCH(A11,$A$1:$A$6,0) + MATCH(B11,OFFSET($A$1,MATCH(A11,$A$1:$A$6,0)-1,1,COUNTA($A$1:$A$6)-MATCH(A11,$A$1:$A$6,0),1),0)-1)
    

    但条件是查找表对第 1 列和第 2 列都进行了排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      相关资源
      最近更新 更多