根据一定的范围将列分组

(不知道我是否在合适的社区,请让我知道如果这个问题更适合于另一个)。

无论如何,我想创build一个新的列组编号根据特定的范围,将在旁边的列中查找。 考虑到vlookup和if语句,这实际上会做这个工作,所以我不必在VBA中创build一些东西,但它不工作:

=if(AC487>=600;3;if(600>AC487>=300;2;if(300>AC487>=60;1;if(60>AC487>=-60;0;if(-60>AC487>=-300;-1;if(-300>AC487>=-600;-2;if(-600>AC487;-3))))))) 

 Column AC Column AD (expected results) 2304 3 760 3 467 2 1500 3 -500 -2 10 0 25 0 -146 -1 -249 -1 132 1 

当一个条件被testing时,它会certificate是真或假。 如果为true,则返回相应的结果。 如果错误,则考虑下一个条件。 在第二次评估中没有理由重申第一个条件(已经被certificate是错误的)。

 =IF(AC487>=600, 3, IF(AC487>=300, 2, IF(AC487>=60, 1, IF(AC487>=-60, 0, IF(AC487>=-300, -1, IF(AC487>=-600, -2, -3)))))) 

第二个IF不需要评估它是否低于600,我们知道它是小于600,因为第一个IF失败了,并且把控制权交给了第二个IF。

备选非IF:

 =LOOKUP(AC487, {-1E+99,-600,-300,-60,60,300,600}, {-3,-2,-1,0,1,2,3}) 

(是的,你可以在公式中input换行符来帮助理解它。)

LOOKUP和嵌套的IF条件

尝试这个:

= IF(AC487> = 600,3,IF(AND(600> AC487,AC487> = 300),2,IF(AND(300> AC487,AC487> = 60),1,IF(AND(60> AC487, AC487> = – 60),0,IF(AND(-60> AC487,AC487> = – 300), – 1,IF(AND(-300> AC487,AC487> = – 600), – 2,-3) )))))