Wwork嵌套if语句的最大数量

我有单元格A1中的if语句检查我的单元格W7以指定数字之间的值:

我的单元格W7可以有一个从高达525到低至0的值:

0 - 525 

我的单元格W7中的值越高,我的单元格A1中的If语句所在的值越小。

我现在所拥有的是一份正在工作的陈述。 这将检查我的W7单元格中的数值达到300,然后在单元格a1中显示数字40。

这里是我现有的if语句:

  =IF(Dashboard!W7=0, 100, IF(AND(Dashboard!W7>= 0, Dashboard!W7<50), 90, IF(AND(Dashboard!W7>=50, Dashboard!W7<100), 80, IF(AND(Dashboard!W7>=100, Dashboard!W7<150), 70, IF(AND(Dashboard!W7>=150, Dashboard!W7<200), 60, IF(AND(Dashboard!W7>=200, Dashboard!W7<250), 50, IF(AND(Dashboard!W7>=250, Dashboard!W7<300), 40))))))) 

但是,我需要通过添加if语句的其余部分来继续这个序列:

 IF(AND(Dashboard!W7>=300, Dashboard!W7<350), 30, IF(AND(Dashboard!W7>=350, Dashboard!W7<400), 20, IF(AND(Dashboard!W7>=400, Dashboard!W7<450), 10, IF(AND(Dashboard!W7>=450, Dashboard!W7<525), 0)))) 

我遇到的问题是当我的最后一个if语句与我现有的if语句结合时,我得到了嵌套的if语句的最大数量达到错误。

尝试更改为LOOKUPfunction 。

 =LOOKUP(Dashboard!W7, {0, 0.01, 50, 100, 150, 200, 250, 300, 350, 400, 450, 525}, {100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 0, 0}) 

或者,您可以设置一个小的基本数据表,并使用VLOOKUP函数来检索金额。 如果经常发生要查找/取回的数据的改变,则后一种方法是特别优选的。

附录:

如果这些值不可能经常改变,你可以尝试这种math模式的方法。

 =MAX(90-INT(Dashboard!W7/50)*10, 0)+NOT(Dashboard!W7)*10 

另一种方法是CASE声明。 您可以指定谨慎的值或范围内的任何内容。 这个例子来自MSDN :

 Dim number As Integer = 8 Select Case number Case 1 To 5 Debug.WriteLine("Between 1 and 5, inclusive") ' The following is the only Case clause that evaluates to True. Case 6, 7, 8 Debug.WriteLine("Between 6 and 8, inclusive") Case 9 To 10 Debug.WriteLine("Equal to 9 or 10") Case Else Debug.WriteLine("Not between 1 and 10, inclusive") End Select 

上面使用Lookup的答案很好, SELECT CASE只是该工具包的另一个工具。

另一种方法是使用条件Choose ,它有点像VBA中的Select Case statememnt。 唯一的问题是你的标准需要互相排斥(否则你会得到一些奇怪的结果)。

语法是:

 Choose( (1 * Test1) + (2 * Test2) + (3 * Test3) + ... + (254 * Test4), Result1, Result2, Result3, .... ,Result254 ) 

结果可以是任何事情 – 包括进一步的testing,并且据我所知,将被懒惰地评估。

因为(1 * 1) + (2 * 1) + (3 * 0) = 3 ),所以如果Test1和Test2都是真的,那么你会得到Test3的结果。