如何应对100多条IF语句

Posted

技术标签:

【中文标题】如何应对100多条IF语句【英文标题】:How to cope with more than 100 IF statements 【发布时间】:2014-11-18 20:03:25 【问题描述】:

我正在使用 MS Excel 2007 中的复选框数组创建一个清单。根据复选框的数量,有 2^7 (=128) 种可能的组合可以选择复选框。选中的每个复选框组合都会产生独特的结果。

成功测试每个条件并在工作表的单元格中给出结果的最有效方法是什么?

示例代码:

=if(and(chkbox1=true,chkbox2=true,chkbox3=false,chkbox4=false,chkbox5=true,chkbox6=false,chkbox7=true),"Unique outcome",if(and(chkbox8=true,chkbox9.............)))))))))

我(未成功)尝试的方法是使用 IF 语句。我试图通过创建 14 个命名范围和大约 9 个嵌套 IF 来绕过嵌套 IF 限制,并在电子表格内的有效嵌套 IF 中编译 14 个命名范围。不幸的是,处理器正在努力计算这个结果(即计算机“冻结”)。

减少命名范围中嵌套 IF 的数量(但增加电子表格中嵌套 IF 的数量)会影响效率吗? 在单元格中使用嵌套 IF 是否比命名范围更好? VLOOKUP 会起作用吗?

目前,我正在考虑使用 VBA 代码,因为人们说这将是处理多种情况的最有效方法。有人有什么建议或建议吗?

【问题讨论】:

【参考方案1】:

将每个 TRUE 或 FALSE 结果的 10 串在一起,然后创建一个查找表,其中包含每个可能的二进制值的列和结果(或行而不是列)的另一列。

【讨论】:

另外,对于将结果串在一起形成二进制字符串的简单方法,您可以使用 Abs(chkbox1) & Abs(chkbox2) & etc... 谢谢你。很有道理,但我仍然不确定。因此,您的方法本质上以最简单的方式定义了各种组合,并提供了一种简洁的方式来搜索结果。我的不确定性在于excel如何知道在vlookup表中寻找什么组合?这有意义吗?我不需要让 excel 知道组合是什么,以便在查找表中搜索它吗?补充一点,这个检查表应该简化决策树类型的函数,根据操作员选择的组合给出建议的结果。再次感谢。 是的,谢谢你。我终于想到了该怎么做。不过我遇到了一个问题....任何带有前导 1 的值,即“1000000”都会给出 #NA 错误。我曾尝试添加一个逗号(就像我对前导零所做的那样)但没有成功。有什么想法吗? 是的,查找返回#N/A。 1000000 是表中的数字。我已将其更改为“文本”格式并带有前导“'”,即 '1000000 表示字符串(我猜我在这里错了),但没有成功。 vlookup 表引用了搜索词所在的单元格,所以我不确定你所说的双引号是什么意思... 这是我用于搜索词的代码:=--X31&--X32&--X37&--X38&--X33&--X34&--X35。将格式更改为文本没有帮助。【参考方案2】:

要扩展 pnuts 的答案,您可以使用以下公式来实现:

=if(chkbox1=true,1,0)+if(chkbox2=true,2,0)+if(chkbox3=true,4,0)+if(chkbox4=true,8,0)+ ...

这将为您提供一个介于 0 和 127 之间的值,然后您可以在 VLOOKUP 函数中使用它从两列表中获取适当的结果(或者更简单地说,在 OFFSET 函数中获取适当的结果来自单列列表)。

【讨论】:

哦。 (谷歌)哦。我有一个包含数千个OFFSETs 的工作簿。我也许可以对其进行一些改进。谢谢。

以上是关于如何应对100多条IF语句的主要内容,如果未能解决你的问题,请参考以下文章

if...else

if判断语句和循环语句

Java中的语句

shell_判断语句If

Java 分支结构

Java 条件语句 if