【问题标题】:How to create complex nested If statement in Excel?如何在 Excel 中创建复杂的嵌套 If 语句?
【发布时间】:2018-05-25 19:15:56
【问题描述】:

我在 Excel 中有一个 If 公式,如下所示:

=IF((Q2="O")*AND(R2="O")*AND(S2="O")*AND(T2="O")*AND(U2="O"),"O","X")

基本上,如果单元格 Q2 到 U2 为 O,则带有公式的单元格中将写入 O。否则它将有 X。由于新条件,现在我想将其更改为嵌套的 If 语句。

这些条件,按顺序是:

  1. 如果单元格 Q2 到 U2 中的任何一个 = X,则单元格 = X

  2. 如果单元格 Q2 到 U2 中的任何一个 = 日期格式,则单元格 = Δ

  3. 如果 Q2 到 U2 = O,则单元格 = O

  4. 如果不满足任何条件,则单元格的值为“FALSE”。 (默认出现)

每个单元格都有这个条件要遵循,

  1. 如果单元格 Q2 到 U2 中的任何一个 = -,则忽略该单元格并计算其他单元格以获得最终结果。

我尝试在原始公式中切换到 Or 来测试条件 1 和 3。

=IF((Q2="O")*or(R2="O")*or(S2="O")*or(T2="O")*or(U2="O"),"O","X")

但它不起作用。另外,我也不确定如何执行条件 5。有什么帮助吗?

仅使用 Excel 公式就可以完成如此​​复杂的事情吗?还是我需要进入 VBA?

【问题讨论】:

  • 条件 4 的“计数”是什么意思?你的意思是得到没有-的单元格数?
  • 意思是忽略-的单元格并得到最终结果。例如,如果 U2 = -,则对单元格 Q2 到 T2 执行条件 1,2 或 3。
  • 简单回答:不要。嵌套的 IF 往往会带来很多问题,尤其是当您(或其他人)想要稍后维护文档时。
  • 更长的答案:如果业务规则如此复杂,一些业务用户会想知道规则的哪一部分导致了结果。因此,将其拆分并将临时结果(具有业务价值)放在额外的单元格中可能是个好主意。额外效果是维护变得更容易。
  • 最后 3 条规则的确切优先级是多少? 3-2-4 还是 3-4-2 还是 4-3-2?

标签: excel excel-formula


【解决方案1】:

如果您按优先级顺序解决问题,这样的事情通常会更容易。看起来 1 的优先级最高:

=IF(COUNTIF(Q2:U2,"X")>0,"X","Does not contain X")

COUNTIF(Q2:U2,"X") 返回XQ2:U2 范围内的出现次数。

代替“不包含X”,我们可以先检查条件2:

=IF(SUMPRODUCT(--ISNUMBER(Q2:U2))>0,"∆","Does not contain X or dates")

Excel 中的日期实际上是一个带有一些装饰性格式的数字。我使用ISNUMBER 来查找数字并使用SUMPRODUCT 来计算范围内已识别的单元格。如果超过 0(至少 1 个),则变为

现在代替“不包含 X 或日期”,我们可以检查 Os。我会计算Os 并添加带有- 的单元格(条件3 和5 一起),看看它们加起来是否等于Q2:U2 中的总单元格(在这种情况下为5):

=IF(COUNTIF(Q2:U2,"O")+COUNTIF(Q2:U2,"-")=5,"O","FALSE")

合并后会变成:

=IF(COUNTIF(Q2:U2,"X")>0,"X",IF(SUMPRODUCT(--ISNUMBER(Q2:U2))>0,"∆",COUNTIF(Q2:U2,"O")+COUNTIF(Q2:U2,"-")=5,"O","FALSE"))

由于所有这些都涉及计数,因此设置帮助列可能更容易,例如:

   | Q | R | S | T | U |       V    |        W       |     X      |     Y      |     Z
1  |   |   |   |   |   | Count of X | Count of dates | Count of O | Count of - | Final value
2  |   |   |   |   |   |       A    |        B       |     C      |     D      |     E

A 将是:

=COUNTIF(Q2:U2,"X")

B 将是:

=SUMPRODUCT(--ISNUMBER(Q2:U2))

C 将是:

=COUNTIF(Q2:U2,"O")

D 将是:

=COUNTIF(Q2:U2,"-")

E 将是:

=IF(V2>0,"X",IF(W2>0,"∆",X2+Y2=5,"O","FALSE"))

【讨论】:

  • 看起来很有希望。我试试看。
猜你喜欢
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多