【问题标题】:Too many if or nested loop in excelexcel中的if或嵌套循环太多
【发布时间】:2013-05-14 18:31:19
【问题描述】:

我的代码中有太多嵌套语句

基本上我有 1 个单元格与 100 个单元格进行比较,这 100 个单元格有自己的值,而 Excel 最多只有 64 个 if 循环。 有什么建议吗?

A=B =>> X=B1

A=C =>> X=C1

A=D =>> X=D1

A=E =>> X=E1

IF(L2=S2,T2,IF(L3=S3,T3,IF(L4=S4,T4,IF(L5=S5,T5,IF(L6=S6,T6,IF(L7=S7,T7,IF(L8=S8,T8,IF(L9=S9,T9,IF(L10=S10,T10,IF(L11=S11,T11))))))))))

谢谢!

【问题讨论】:

  • 如果值 B, C, ... 在列中,您可以添加另一列,例如 IF($A = B; true; false) 然后填充为 $A = C, $A = D 等,然后使用VLOOKUP 获取第一个true 值。
  • 您使用 if 的示例与您关于“要比较的 1 个单元格”的陈述相矛盾
  • 我在 excel 中使用 drobbox 列表的 1 个单元格,在我的 ex 脚本 L2 单元格中,与 S2 单元格相比,如果为真,则使用单元格 T2 中的值

标签: excel loops if-statement nested


【解决方案1】:

以下数组公式可能会有所帮助:

={INDEX(A1:H1;1;MIN((IF(L3:R3=S3:Y3;COLUMN(B1:H1);""))))}

L3:R3 正在比较的数据数组 1
S3:Y3 正在比较的数据数组 2
B1:H1 数据数组的对应值

INDEX 将从第 1 行和与找到的第一个匹配项对应的列的交集中找到值。数组的大小应该匹配,否则公式会给出#N/A

公式是用 Shift-Ctrl-Enter 插入的,大括号是由 Excel 插入的,而不是由用户插入的。

【讨论】:

    【解决方案2】:

    我认为查表比一堆 if 简单得多:

    =HLOOKUP(Value,{"Cond1","Cond2","Cond3";"Res1","Res2","Res3"},2,FALSE)
    

    =VLOOKUP(Value,{"Cond1","Res1";"Cond2","Res2";"Cond3","Res3"},2,FALSE)
    

    如果您的条件和结果是连续范围,那就更简单了

    【讨论】:

      【解决方案3】:

      Excel 中有 7 个嵌套 if 的硬性限制。

      Here is a trick 增加此限制。

      【讨论】:

      • 我试过了,只允许 64 级的 IF 嵌套,超过这个错误信息会出现:无法输入指定的公式,因为它使用了超过 64 级的嵌套
      猜你喜欢
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多