【问题标题】:How to return the column heading for multiple matches, from multiple criteria, in Excel?如何在 Excel 中从多个条件返回多个匹配项的列标题?
【发布时间】:2017-07-21 15:30:33
【问题描述】:

我正在为不同的客户群体处理 40 多个价目表。通过输入商品编号和价格,我想显示与该商品/价格匹配的所有价目表的名称。我已经设置了如下表的项目和定价列表。有些商品在多个价目表中的价格相同,有些价目表并未列出所有商品。

Item     ListPrice  Red    Blue   Green    Grey
Hosaka2  $200       $180   $188            $171
TrodesH  $460       $410   $380   $400     $380
TrodesL  $810       $680   $680   $720
Shuri    $80        $72           $72      $70

我想在单元格中输入 TrodesH 和 $380 并让公式返回 Blue & Grey。或者输入 Hosaka2 和 $200 并让公式返回 ListPrice。

我过去曾使用此Index array formula 将多个匹配项返回到单个条目。例如,列出地址与我输入的邮政编码匹配的所有帐号。它非常方便。但在这里我正在寻找项目和价格的组合。有什么想法可以让我继续前进吗?

编辑:为了让 Excel 文件更易读,我将上述数据放在名为“Matrix”的工作表中,并将查找公式放在名为“Check”的工作表中。

【问题讨论】:

    标签: arrays excel multiple-matches


    【解决方案1】:

    我们假设 A1:F5 包含数据,H2 包含感兴趣的项目,例如 TrodesH,I2 包含感兴趣的价格,例如 $380,试试...

    J2:
    
    =COUNTIF(INDEX($B$2:$F$5,MATCH($H2,$A$2:$A$5,0),0),$I2)
    
    K2, confirmed with CONTROL+SHIFT+ENTER, and copied across:
    
    =IF(COLUMNS($K2:K2)<=$J2,INDEX($B$1:$F$1,SMALL(IF(INDEX($B$2:$F$5,MATCH($H2,$A$2:$A$5,0),0)=$I2,COLUMN($B$1:$F$1)-COLUMN($B$1)+1),COLUMNS($K2:K2))),"")
    

    希望这会有所帮助!

    【讨论】:

    • 正如我在上面的编辑中所指出的,我将您的 J/K 公式移到了不同​​的工作表中,以使结果更易于阅读,并且效果很好。我用几个订单的数字对其进行了测试。一份订单有几个项目,它们共同匹配来自 7 个不同价目表的价格。但只有一个价目表与我输入的所有产品的价格相匹配。当然有可能有一个与多个价目表匹配的订单,但我用它来指导我的下一步行动,而不是作为最终答案。为此,它工作得很好。谢谢,多梅尼克!
    【解决方案2】:

    以下图为模型(根据自己的数据布局和位置调整),可以在J1输入这个公式,然后复制/粘贴到彩色区域:

    J1:
    =IFERROR(INDEX($1:$1,AGGREGATE(15,6,COLUMN($B$2:$F$5)
      /($A$2:$A$5=$H1)/($B$2:$F$5=$I1),COLUMN(A:A))),"")
    

    【讨论】:

    • 请注意,尽管如此,使用此方法,无论是否匹配,都会为每个列/价目表计算数组公式。而使用我的方法,数组公式仅针对匹配的列计算。因此,如果只有两列匹配,则公式仅计算两次,而不是本示例中的 5 次或指定的 40 次以上。如果有 40 多列,则可能存在性能问题,尽管不一定很重要.
    • @Domenic 我不认为存在严重的性能问题。 42 列和 1000 多行的测试是可以的,需要更多的基准测试。重要的是公式不是易变的,不需要任何帮助列。它也很简单,除非性能成为一个重要问题,否则我总是倾向于合理的数据集。
    • 是的,正如我所提到的,虽然可能存在性能问题,但不一定很重要。当然,这取决于数据的实际大小。即便如此,我知道有些人愿意牺牲一些效率来避开辅助列。 :-)
    • 您的解决方案也很有效。我正在使用 80 多个价目表,但只有 200 行。可能存在性能差异,但对于这么小的数据集,我真的无法检测到它。
    • 我已将这些公式复制到我的检查工作表中的 20 行。使用 Domenic 的公式,如果没有要查找的产品/价格,则公式的结果为 #N/A。使用 A.S.H. 的公式,如果没有产品/价格,则结果是每个单元格中的“价格表”。在这两者中,我宁愿有#N/A。不过,我会继续测试这两种解决方案。
    猜你喜欢
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多