具有嵌套IF / LEFT / AND函数的Excel公式

时间:2019-03-20 13:28:27

标签: excel excel-formula formula

我使用嵌套的IF语句创建了一个运行良好的公式,但是我需要为其添加更多的逻辑。我将在公式中嵌套其他语句,但在正确的处理方式上我有些困惑。

当前公式为:

=IF(LEFT(G3,1)="1","998",IF(LEFT(G3,1)="2","998",IF(LEFT(G3,1)="3","998",IF(LEFT(G3,1)="4","996",IF(LEFT(G3,1)="5","996",K3)))))

这工作正常,但是现在我需要添加其他逻辑:

  • 如果G3以“ 9”开头,而K3并非以“ 075”,“ 076”或“ 089”开头,则单元格等于“ 997”

我的失败尝试是这样的:

IF(LEFT(G3,1)="1","998",IF(LEFT(G3,1)="2","998",IF(LEFT(G3,1)="3","998",IF(LEFT(G3,1)="4","996",IF(LEFT(G3,1)="5","996",IF(LEFT(G3,1)="9"(AND(LEFT(K3,3)<>"075"))K3))))))

这是我尝试添加的嵌套语句:

IF(LEFT(G3,1)="9"(AND(LEFT(K3,3)<>"075"))

那么显然我将需要为“ 076”和“ 089”再重复几次,但是我还没有为其中之一做正确的事。

我知道这可以通过一些VBA代码来完成,但是对于此文件,我希望避免使用VBA,并将其限制为仅适用于公式。

任何帮助将不胜感激!

编辑: 使用Scott和L.Scott的答案,即使K3的值为075、076或089,我仍然有“ 997”输入到单元格中。以下是L.Scott推荐的公式的屏幕截图,结果仍然显示“ 997”。 enter image description here

2 个答案:

答案 0 :(得分:1)

在以下情况下,将其保留为现有的嵌套样式:

=IF(LEFT(G3,1)="1","998",IF(LEFT(G3,1)="2","998",IF(LEFT(G3,1)="3","998",IF(LEFT(G3,1)="4","996",IF(LEFT(G3,1)="5","996",IF(AND(LEFT(G3,1)="9",NOT(OR(OR(LEFT(K3,3)="075",LEFT(K3,3)="076"),LEFT(K3,3)="089"))),"997",K3))))))

=
IF(LEFT(G3,1)="1","998",
  IF(LEFT(G3,1)="2","998",
    IF(LEFT(G3,1)="3","998",
      IF(LEFT(G3,1)="4","996",
        IF(LEFT(G3,1)="5","996",
          IF(
            AND(
              LEFT(G3,1)="9",
              NOT(
                OR(
                  OR(
                    LEFT(K3,3)="075",
                    LEFT(K3,3)="076"),
                  LEFT(K3,3)="089"
                )
              )
            ), "997", K3
          )
        )
      )
    )
  )
)

答案 1 :(得分:1)

这是您可以使用的公式:

=IF(SUMPRODUCT(--(LEFT(G3,1)={"1","2","3"}))>0,"998",IF(SUMPRODUCT(--(LEFT(G3,1)={"4","5"}))>0,"996",IF(AND(SUMPRODUCT(--(LEFT(G3,1)="9"))>0,SUMPRODUCT(--(LEFT(K3,3)={"075","076","089"}))=0),"997")))

如果K3是一个实际数字而不是文本,则@ScottCraner有一个很好的观点,它不会看到前导零。为了解决这个问题,您应该在单元格'的值前面添加K3