首页 > 解决方案 > 多个单元格的 MATCH 函数

问题描述

我有一个如下公式,它使用 Datatable1 检查两个单元格的 MATCH (分配了一个带有一些数据的名称)。在这里,如果一个单元格中的任何一个与 Datatable1 匹配,则它将值写入 I7。

IF(OR((ISNUMBER(MATCH($L7;DataTable1;0))=TRUE);(ISNUMBER(MATCH($O7;DataTable1;0))=TRUE));$I7;"")

是否可以使用单个 MATCH 函数压缩公式并检查 $L7 或 $O7 是否与 Datatable1 匹配?唯一的原因是缩短公式。

标签: excelif-statementexcel-formulamatch

解决方案


您可以使用组合 COUNTIF 和 SUM 的数组公式来检查 Datatable1 中是否存在该值。像这样的东西应该工作:

=SUM(COUNTIF(DataTable1;$L7);COUNTIF(DataTable1;$O7))

如果没有巧合,这将返回 0,如果有 1 或 2 个巧合,则返回 1 或 2。然后你只需要将它包装到你的 IF 中:

=IF(SUM(COUNTIF(DataTable1;$L7);COUNTIF(DataTable1;$O7))=0;"";$I7)

如果没有匹配,则不返回任何内容,任何情况下都返回 I7 处的值

它更浓缩,它是一个更短的公式。

编辑:查看@ScottCraner 后,您可以添加 CHOOSE 并使其更短,但作为数组公式:

=IF(SUM(COUNTIF(DataTable1;CHOOSE({1;2};$L7;$O7)))=0;"";$I7)

因为是数组公式,所以必须按CTRL++ENTER输入SHIFT


推荐阅读