将两个嵌套的IF语句与多个条件组合

时间:2018-11-06 15:46:45

标签: if-statement indexing excel-formula match

“ Meds”工作表中有两列数据...

  MedContinuing     AgeAtMedStop
      Yes             "Blank"
      Yes              72.22
      No              "Blank"
      No               72.57
    "Blank"            73.85

我正在另一张纸上写一个公式,根据以下内容返回1或0:

  1. 如果MedContinuing为“空白”,则不执行任何操作
  2. 如果MedContinuing为“否”且AgeAtMedStop为空白,则不执行任何操作
  3. 如果MedContinuing为“是”且AgeAtMedStop为“空白”,则返回1。如果AgeAtMedStop为数字,则返回0。
  4. 如果MedContinuing为“否”且AgeAtMedStop为数字,则返回1。否则,不返回任何内容。

MedContinuing为“是”或为“否”时,我能够编写两个单独的函数(请参见下文),但是我需要将两个函数合并为一个公式。

是的话...

=IF(INDEX(Meds!2:2,MATCH("MedContinuing",Meds!$1:$1,0))="","",
IF(INDEX(Meds!2:2,MATCH("MedContinuing",Meds!$1:$1,0))="No","",
IF(AND(INDEX(Meds!2:2,MATCH("MedContinuing",Meds!$1:$1,0))="Yes",INDEX(Meds!2:2,MATCH("AgeAtMedStop",Meds!$1:$1,0))=""),1,0)))

没有的时候...

=IF(INDEX(Meds!2:2,MATCH("MedContinuing",Meds!$1:$1,0))="","",
IF(INDEX(Meds!2:2,MATCH("MedContinuing",Meds!$1:$1,0))="Yes","",
IF(AND(INDEX(Meds!2:2,MATCH("MedContinuing",Meds!$1:$1,0))="No",INDEX(Meds!2:2,MATCH("AgeAtMedStop",Meds!$1:$1,0))=""),"",
IF(AND(INDEX(Meds!2:2,MATCH("MedContinuing",Meds!$1:$1,0))="No",INDEX(Meds!2:2,MATCH("AgeAtMedStop",Meds!$1:$1,0))>0),1,0))))

编辑:解决方案

使用Peter K的逻辑...

=IF(INDEX(Meds!6:6,MATCH("MedContinuing",Meds!$1:$1,0))="","",
IF(AND(INDEX(Meds!6:6,MATCH("MedContinuing",Meds!$1:$1,0))="No",INDEX(Meds!6:6,MATCH("AgeAtMedStop",Meds!$1:$1,0))=""),"",
IF(AND(INDEX(Meds!6:6,MATCH("MedContinuing",Meds!$1:$1,0))="Yes",INDEX(Meds!6:6,MATCH("AgeAtMedStop",Meds!$1:$1,0))=""),1,
IF(AND(INDEX(Meds!6:6,MATCH("MedContinuing",Meds!$1:$1,0))="Yes",INDEX(Meds!6:6,MATCH("AgeAtMedStop",Meds!$1:$1,0))>0),0,
IF(AND(INDEX(Meds!6:6,MATCH("MedContinuing",Meds!$1:$1,0))="No",INDEX(Meds!6:6,MATCH("AgeAtMedStop",Meds!$1:$1,0))>0),1,"")))))

2 个答案:

答案 0 :(得分:2)

从您的问题尚不完全清楚,为什么要使用INDEXMATCH函数来解决这样简单的问题?

我建议从基本的嵌套if函数开始:
=IF(A2="";"";IF(A2="No";IF(B2="";"";1);IF(B2="";1;0)))

您可以将此函数放在两列旁边,然后复制到另一个工作表,以便Excel处理这些引用。 我还假设您的数据是干净无误的,即您的列中仅存在3个MedContinuing可能值(“是”,“否”或空白)和2个AgeAtMedStop(空白或数字),因此没有{{1} }测试需要消除其他可能的值。

答案 1 :(得分:0)

您可以在下面尝试此方法

我已经为您所需的逻辑创建了一个帮助器表,它将有助于将来更新或扩展逻辑

单元格C2中的公式为

=INDEX($F$2:$G$4,MATCH(A2,$E$2:$E$4,0),IF(B2="Blank",1,IF(ISNUMBER(B2),2,0)))

enter image description here