多种IFfunction的替代品

使用了这样的公式:

=IF(L63=$AA$3;2;IF(L63=$AA$4;3;IF(L63=$AA$5;4;IF(L63=$AA$6;5;IF(L63=$AA$7;6;IF(L63=$AA$8;7;IF(L63=$AA$9;8;IF(L63=$AA$10;9;0)))))))) 

但现在需要检查更多,否则上面的公式不能工作(太多, if是)。

试过这样一个公式:

 =IF(L25=$AA$3;2;"")&IF(L25=$AA$4;3;"")&IF(L25=$AA$5;4;"")&IF(L25=$AA$6;5;"")&IF(L25=$AA$7;6;"")&IF(L25=$AA$8;7;"")&IF(L25=$AA$9;8;"")&IF(L25=$AA$10;9;"")&IF(L25=$AA$11;10;"")&IF(L25=$AA$12;11;"")&IF(L25=$AA$13;12;"")&IF(L25=$AA$14;13;"")&IF(L25=$AA$15;14;"")&IF(L25=$AA$16;15;"")&IF(L25=$AA$17;16;"")&IF(L25=$AA$18;17;"")&IF(L25=$AA$19;18;"")&IF(L25=$AA$20;19;"") 

但是有问题。 例如L25=$AA$3 (真),并在单元格(例如单元格M1包含上述公式)显示数字2 。 那没问题。 但是,例如,如果在单元格M2写公式=IF(M1=2;2;0) ,它将显示数字0而不是2

问题在哪里?
如何获得单元格M2数字2
可能有替代解决scheme吗?

用一个命名的范围(比如说arrLook包含一列单元格A> H,并且立即在右边2> 10,这应该适用于L63中的任何一个A> H:

= VLOOKUP(L63,arrLook,2,FALSE)

在M2中,当L63包含A( arrLook的第一项)时。

编辑澄清

如果你想要更多的“条件”只是扩大arrays。
PS请使用分号而不是逗号(以符合您的语言环境设置)。

翻译你的特定问题(查找一个值并返回一个递增的数字),你可以使用一个MATCH公式:

 =IF(COUNTIF($AA$3:$AA$20,L25)=0,"",MATCH(L25,$AA$3:$AA$20,0)+1) 

一般来说,你可以创build一个查找表,然后使用VLOOKUP函数。 这很有帮助,因为它可以返回非增量数字的结果:

  __AA__ _AB_ 1 2 3 Value1 2 4 Value2 3 5 Value2 4 6 Value2 5 7 Value2 6 8 Value2 7 9 Value2 8 10 Value2 9 11 Value2 10 12 Value2 11 13 Value2 12 14 Value2 13 15 Value2 14 16 Value2 15 17 Value2 16 18 Value2 17 19 Value2 18 20 Value2 19 

式:

 =IF(COUNTIF($AA$3:$AA$20,L25)=0,"",VLOOKUP(L25,$AA$3:$AB$20,2,FALSE)) 

注意:您可能需要将逗号更改为分号; 以使该公式在您的Excel版本上运行。