如何处理超过100个IF语句

时间:2014-09-24 10:50:39

标签: excel excel-vba if-statement checkbox excel-2007 vba

我正在使用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个命名范围来绕过嵌套的IF限制,每个命名范围大约有9个嵌套IF,并在电子表格中的有效嵌套IF中编译14个命名范围。不幸的是,处理器正在努力计算结果(即计算机是"冻结")。

  • 减少指定范围内嵌套IF的数量(但增加电子表格中嵌套IF的数量)会对效率产生影响吗?
  • 在单元格而不是命名范围中使用嵌套IF会更好吗?
  • VLOOKUP会工作吗?

目前,我正在考虑使用VBA代码,因为人们已经说过这将是处理众多条件的最有效方式。有没有人有任何建议或建议?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

要扩展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函数中从单列列表中获取适当的结果。)