excel2007中if函数嵌套超过64个了怎么办?

要把以上表格通过Excel公式体现出来,从上到下一个一个的输入,
需要满足:如果B10=十二 且 D10=1,则E10=1117;如果B10=十二 且 D10=2,则E10=1196;
……如果B10=二十七 且 D10=1,则E10=316;……如果B10=二十七 且 D10=6,则E10=420.
就这样一个个的输入我会,但是最多只能嵌套64个,这个表格输入公式需要嵌套100多个,不够用怎么办? 下面是我输入的一些,从下面往上输入的,请教大神们怎么能完整的把这个表格录入公式??
=IF(AND(B10=27,D10=1),290,IF(AND(B10=27,D10=2),316,IF(AND(B10=27,D10=3),342,IF(AND(B10=27,D10=4),368,IF(AND(B10=27,D10=5),394,IF(AND(B10=27,D10=6),420,IF(AND(B10=26,D10=1),320,IF(AND(B10=26,D10=2),347,IF(AND(B10=26,D10=3),374,IF(AND(B10=26,D10=4),401,IF(AND(B10=26,D10=5),428,IF(AND(B10=26,D10=6),455,IF(AND(B10=25,D10=1),352,IF(AND(B10=25,D10=2),380,IF(AND(B10=25,D10=3),408,IF(AND(B10=25,D10=4),436,IF(AND(B10=25,D10=5),464,IF(AND(B10=25,D10=6),492,IF(AND(B10=25,D10=7),520,IF(AND(B10=24,D10=1),386,IF(AND(B10=24,D10=2),416,IF(AND(B10=24,D10=3),446,IF(AND(B10=24,D10=4),476,IF(AND(B10=24,D10=5),506,IF(AND(B10=24,D10=6),536,IF(AND(B10=24,D10=7),566,IF(AND(B10=24,D10=8),596,IF(AND(B10=23,D10=1),422,IF(AND(B10=23,D10=2),455,IF(AND(B10=23,D10=3),488,IF(AND(B10=23,D10=4),521,IF(AND(B10=23,D10=5),554,IF(AND(B10=23,D10=6),587,IF(AND(B10=23,D10=7),620,IF(AND(B10=23,D10=8),653,IF(AND(B10=22,D10=1),461,IF(AND(B10=22,D10=2),498,IF(AND(B10=22,D10=3),535,IF(AND(B10=22,D10=4),572,IF(AND(B10=22,D10=5),609,IF(AND(B10=22,D10=6),646,IF(AND(B10=22,D10=7),683,IF(AND(B10=22,D10=8),720,IF(AND(B10=22,D10=9),757,IF(AND(B10=21,D10=1),504,IF(AND(B10=21,D10=2),545,IF(AND(B10=21,D10=3),586,IF(AND(B10=21,D10=4),627,IF(AND(B10=21,D10=5),668,IF(AND(B10=21,D10=6),709,IF(AND(B10=21,D10=7),750,IF(AND(B10=21,D10=8),791,IF(AND(B10=21,D10=9),832,IF(AND(B10=21,D10=10),873))))))))))))))))))))))))))))))))))))))))))))))))))))))

if函数最多可以嵌套64层,可以考虑用其他函数功能替换,比如vlookup或者lookup函数能够实现多条件的查找和引用。

替换方法就是将if中的条件,变成vlookup中的第一个参数,就是需要查找的数值、引用或者文本字符串,可以返回对应条件的匹配值。

举个例子,64层有些长,举个4层的例子,原理是一样的。

根据对应班级,返回学生班主任的名字

使用if函数,嵌套4层,如果64层,公式长度可想而知。

使用vlookup函数,十分简便,不论多少条件,都可以这么写。

附上vlookup函数用法

VLOOKUP函数

在表格或数值数组的首列查找指定的数值,并由此返回表格或数组当前行中指定列处的数值。当比较值位于数据表首列时,可以使用函数 VLOOKUP 代替函数
HLOOKUP。

在 VLOOKUP 中的 V 代表垂直。

语法

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

Lookup_value  为需要在数组第一列中查找的数值。LOOKUP_value
可以为数值、引用或文本字符串。

Table_array  为需要在其中查找数据的数据表。可以使用对区域或区域名称的引用,例如数据库或数据清单。

如果 range_lookup 为 TRUE,则 table_array
的第一列中的数值必须按升序排列:…、-2、-1、0、1、2、…、-Z、FALSE、TRUE;否则,函数 VLOOKUP 不能返回正确的数值。如果
range_lookup 为 FALSE,table_array 不必进行排序。

通过在“数据”菜单中的“排序”中选择“升序”,可将数值按升序排列。

Table_array 的第一列中的数值可以为文本、数字或逻辑值。

文本不区分大小写。

Col_index_num   为 table_array 中待返回的匹配值的列序号。Col_index_num 为 1 时,返回 table_array
第一列中的数值;col_index_num 为 2,返回 table_array 第二列中的数值,以此类推。如果 col_index_num 小于 1,函数
VLOOKUP 返回错误值值 #VALUE!;如果 col_index_num 大于 table_array 的列数,函数 VLOOKUP 返回错误值
#REF!。

Range_lookup   为一逻辑值,指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE
或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值;如果 range_value 为 FALSE,函数
VLOOKUP 将返回精确匹配值。如果找不到,则返回错误值 #N/A。

说明

如果函数 VLOOKUP 找不到 lookup_value,且 range_lookup 为 TRUE,则使用小于等于 lookup_value
的最大值。

如果 lookup_value 小于 table_array 第一列中的最小数值,函数 VLOOKUP 返回错误值 #N/A。

如果函数 VLOOKUP 找不到 lookup_value 且 range_lookup 为 FALSE,函数 VLOOKUP 返回错误值 #N/A  

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-11-12

将已知数据建表,然后通过INDEX+MATCH函数查找引用数据。

在E10单元格输入

=INDEX($H$2:$U$17,MATCH(B10,G$2:G$17,0),D10)

公式表示:在H2:J17单元格区域,由B10在G2:G17中的位置算作行号,以D10算作列号,交叉单元格即为引用数据。

 

详见附图

 

第2个回答  2014-05-08
亲,把上面这张表录入到工作表中(如Sheet2的A1:O17按顺序录入上表)。
E10公式:
=VLOOKUP(B10,Sheet2!$A:O,D10+1,0)

如果不会弄,把数据表录好了,发给我。
315716185本回答被提问者采纳
第3个回答  2014-05-08
这样的条件不要用if,另起一表,把你的条件写好,用vlookup或用index match
相似回答