【问题标题】:IF MATCH multiple criteriaIF MATCH 多个条件
【发布时间】:2018-02-02 09:03:49
【问题描述】:

表 1

|    | 1 Jan 2018 | 2 Jan 2018 | 3 Jan 2018 | 4 Jan 2018 | 5 Jan 2018 |
|----|------------|------------|------------|------------|------------|
| A1 |            |            |            |            |            |
| A2 |            |            |            |            |            |
| A3 |            |            |            |            |            |
| A4 |            |            |            |            |            |
| A5 |            |            |            |            |            |
| A6 |            |            |            |            |            |

表 2

|----|----------|-----------|-----------|-----------|-----------|
| A1 | 3-Jan-18 | 10-Jan-18 | 17-Jan-18 | 24-Jan-18 | 31-Jan-18 |
| A2 | 3-Jan-18 | 10-Jan-18 | 17-Jan-18 | 24-Jan-18 | 31-Jan-18 |
| A3 | 3-Jan-18 | 10-Jan-18 | 17-Jan-18 | 24-Jan-18 | 31-Jan-18 |
| A4 | 3-Jan-18 | 6-Jan-18  | 10-Jan-18 | 13-Jan-18 | 17-Jan-18 |
| A5 | 3-Jan-18 | 10-Jan-18 | 17-Jan-18 | 24-Jan-18 | 31-Jan-18 |
| A6 | 3-Jan-18 | 10-Jan-18 | 17-Jan-18 | 24-Jan-18 | 31-Jan-18 |

如果匹配

=IF(MATCH(A2,$A$27:$A$54,0) & MATCH(C1,$B$27:$S$54,0),"1","")
  • 从中得到 #N/A 错误
  • 尝试将公式应用于表 1 中的单元格以查找表 2 中的值
  • 如果匹配,则输出为 1,否则为 0

上面的表格和图片清楚地说明和实验。 提前致谢(:

应用公式和输出

【问题讨论】:

    标签: if-statement excel-formula match


    【解决方案1】:

    首先,MATCH() 返回一个代表找到匹配位置的数字,因此您的公式将 IF(1 & 1,"1","") 表示为您的第一个潜在匹配,这里没有逻辑。

    第一个修正案是强制输出真/假:=IF(AND(ISNUMBER(MATCH()),ISNUMBER(MATCH())),"1","")

    你仍然有第二个匹配引用整个结果范围的问题,你真的希望它只查看满足第一个条件的行,为此我们将使用数组公式来构建你的数组想用:

    编辑:你不能从 Match 中构建一个数组,因为它返回一个整数:

    =LARGE(IF(B$1=IF($A2=$A$27:$A$54,$B$27:$S$54),1,0),1)

    这是一个数组公式,同时还在公式栏中按Ctrl+Shift+Enter

    内部IF() statemnet 正在构建每一行的数组,在 A 列匹配的地方提供值,在不匹配的地方提供 FALSE。然后,外部 IF() 语句评估 0 或 1 是否在该新数组中找到日期...

    我已将其包装在 LARGE() 中以返回第一个最大的数字,因此如果找到单个匹配项,它将返回 1。如果您想要空白,您可以将整个内容包装在另一个 IF() 语句中; IF([formula]=0,"",1)

    【讨论】:

    • 感谢您的解释,我理解您的回答,我确实也按了 Ctrl+Shift+Enter,但与 1 月 3 日的比较结果与不匹配的日期一样空白...
    • 好的,我会模拟你的数据并看一下,我把这个写在我的头上......
    • @Tyler 抱歉,这显然是一项匆忙的工作,因为您不能使用 Match 来构建数组,所以我并没有直截了当地思考。我已经编辑了答案,现在展示了如何使用 if 语句来产生你想要的结果......
    • 我根据您的解释应用了这个。 {=IF(LARGE(IF(D$1=IF($A2=$A$27:$A$54,$B$27:$S$54),1,),1)=0,"",1)} 有效,并且从现在开始肯定会为我节省大量时间。非常感谢(:
    猜你喜欢
    • 2019-10-09
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 2016-01-20
    • 2015-02-07
    • 2011-06-16
    相关资源
    最近更新 更多