excel里根据下拉菜单内容自动计算公司,我用的if但是超出嵌套64层怎么办
发布网友
发布时间:2022-05-06 12:27
我来回答
共5个回答
热心网友
时间:2023-10-09 12:53
你好,首先佩服你的耐心。对于你提的if函数超过64层了。我们应该寻找一下规律,或许找得到更简单的办法
因为具体的表没有看到,只看到了你的公式,所以只找到了两类的规律。
第一部分等于AL列的这个没有看出具体规律,因此需要你再看看;
第二部分就是等于N4*O4
第三部分就是等于O4-N4
那么我们可以在G列前面加一个辅助列把其归纳为三类,一是杂项、二是费用类、三是维修类,那么这个If嵌套就少很多了
如下图
其实只要把表格做规范了,内容输入规范,那么后续的还是很好处理的
希望帮到你了,望采纳,谢谢!
热心网友
时间:2023-10-09 12:53
你的公式我分析了一下,结果只有两类,一类是取AL列的某行数据,二类是O4*N4,那么两个IF判断即可,你的代码分析过程如下:
IF(G1:G1000="a日常",Sheet1!AL1,
IF(G1:G1000="b维护",Sheet1!AL3,
IF(G1:G1000="b质询",Sheet1!AL5,
IF(G1:G1000="b施工",Sheet1!AL6,
IF(G1:G1000="c维修",Sheet1!AL7,
IF(G1:G1000="c安装",Sheet1!AL9,
IF(G1:G1000="d咨询",Sheet1!AL11,
IF(G1:G1000="d安装",Sheet1!AL13,
IF(G1:G1000="d售后",Sheet1!AL14,
IF(G1:G1000="e咨询",Sheet1!AL15,
IF(G1:G1000="e收货",Sheet1!AL17,
IF(G1:G1000="e入库",Sheet1!AL18,
IF(G1:G1000="f领用",Sheet1!AL19,
IF(G1:G1000="f入库",Sheet1!AL21,
IF(G1:G1000="g咨询",Sheet1!AL22,
IF(G1:G1000="g办事",Sheet1!AL23,
IF(G1:G1000="h咨询",Sheet1!AL25,
IF(G1:G1000="a费用",O4*N4,
IF(G1:G1000="b采购",O4*N4,
IF(G1:G1000="c购买",O4*N4,
IF(G1:G1000="d购买",O4*N4,
IF(G1:G1000="e购买",O4*N4,
IF(G1:G1000="f购买",O4*N4,
IF(G1:G1000="g缴费",O4*N4,
IF(G1:G1000="h付款",O4*N4,
IF(G1:G1000="i付款",O4*N4,
IF(G1:G1000="j转账",O4*N4,
IF(G1:G1000="j商家",O4*N4,
IF(G1:G1000="j缴纳",O4*N4,
IF(G1:G1000="j扣分",O4*N4,
IF(G1:G1000="j加油",O4*N4,
IF(G1:G1000="j充值",O4*N4,
IF(G1:G1000="j对公付",O4*N4,
IF(G1:G1000="k付款",O4*N4,
IF(G1:G1000="k水费",O4*N4,
IF(G1:G1000="k电费",O4*N4,
IF(G1:G1000="k气费",O4*N4,
IF(G1:G1000="k供暖费",O4*N4,
IF(G1:G1000="k物业费",O4*N4,
IF(G1:G1000="l费用",O4*N4,
IF(G1:G1000="l中药",O4*N4,
IF(G1:G1000="l西药",O4*N4,
IF(G1:G1000="n购买",O4*N4,
IF(G1:G1000="o付费",O4*N4,
IF(G1:G1000="p转入",O4*N4,
IF(G1:G1000="p转出",O4*N4,
IF(G1:G1000="p买入",O4*N4,
IF(G1:G1000="p卖出",O4*N4,
IF(G1:G1000="p借款",O4*N4,
IF(G1:G1000="p还款",O4*N4,
IF(G1:G1000="p还款",O4*N4,
IF(G1:G1000="p人寿",O4*N4,
IF(G1:G1000="p车险",O4*N4,
IF(G1:G1000="p入",O4*N4,
IF(G1:G1000="p出",O4*N4,
IF(G1:G1000="q用品",O4*N4,
IF(G1:G1000="q食品",O4*N4,
IF(G1:G1000="q玩具",O4*N4,
IF(G1:G1000="q用具",O4*N4,
IF(G1:G1000="q卫生",O4*N4,
IF(G1:G1000="j维修",O4-N4,
IF(G1:G1000="j保养",O4-N4,
IF(G1:G1000="j市区",O4-N4,
IF(G1:G1000="j长途",O4-N4,
IF(G1:G1000="j班车",O4-N4,
第一类情况的对应关系为:
G列内容 对应AL列的行
a日常 1
b维护 3
b质询 5
b施工 6
c维修 7
c安装 9
d咨询 11
d安装 13
d售后 14
e咨询 15
e收货 17
e入库 18
f领用 19
f入库 21
g咨询 22
g办事 23
h咨询 25
可以使用VLOOKUP公式计算:
=VLOOKUP(G2,{"G列内容","对应AL列的行";"a日常",1;"b维护",3;"b质询",5;"b施工",6;"c维修",7;"c安装",9;"d咨询",11;"d安装",13;"d售后",14;"e咨询",15;"e收货",17;"e入库",18;"f领用",19;"f入库",21;"g咨询",22;"g办事",23;"h咨询",25},2,0)
整体公式为:
=INDEX(AL:AL,VLOOKUP(....))
带如VLOOKUP后:
=INDEX(AL:AL,VLOOKUP(G2,{"G列内容","对应AL列的行";"a日常",1;"b维护",3;"b质询",5;"b施工",6;"c维修",7;"c安装",9;"d咨询",11;"d安装",13;"d售后",14;"e咨询",15;"e收货",17;"e入库",18;"f领用",19;"f入库",21;"g咨询",22;"g办事",23;"h咨询",25},2,0))
如果G2的值不在上面的范围内,VLOOKUP结果会报错,此时应该反馈O4*N4作为结果,这可以使用IFERROR实现:
=IFERROR(INDEX(...), N4*O4)
最终公式为:
=IFERROR(INDEX(AL:AL,VLOOKUP(G2,{"G列内容","对应AL列的行";"a日常",1;"b维护",3;"b质询",5;"b施工",6;"c维修",7;"c安装",9;"d咨询",11;"d安装",13;"d售后",14;"e咨询",15;"e收货",17;"e入库",18;"f领用",19;"f入库",21;"g咨询",22;"g办事",23;"h咨询",25},2,0)), N4*O4)
热心网友
时间:2023-10-09 12:54
用Vlookup就可以解决
A2单元格输入公式,向下填充
后面需要公式计算结果的也放在条件的后面,就像这里的E3是=F5+G5得出的
热心网友
时间:2023-10-09 12:54
将以上公式改成并列IF的方法,可以突破IF函数嵌套层数的*。(也就是各段IF判断单独运行,用连接符&连接起来!)
例如:=IF(G2=1,1,)&IF(G2=2,2,)&IF(G2=3,3,)&IF(G2=4,4,)&IF(G2=5,5,)&IF(G2=6,6,)&IF(G2=7,7,)&IF(G2=8,8,)&IF(G2=9,9,)&IF(G2=10,10,)&IF(G2=11,11,)&IF(G2=12,12,)&IF(G2=13,13,)&IF(G2=14,14,)&IF(G2=15,15,)&IF(G2=16,16,)
热心网友
时间:2023-10-09 12:55
如果表格设计得当,应该用很简单得公式,应该有个基础表或者叫做对照表