excel表格中 如何建立一个if循环函数
答案:5 悬赏:20
解决时间 2021-02-12 03:20
- 提问者网友:紫柔同归
- 2021-02-11 17:39
excel表格中 如何建立一个if循环函数
最佳答案
- 二级知识专家网友:夢想黑洞
- 2021-02-11 17:57
根据你的意思,如果用if语句的话,很难实现,但是你的公式中的循环有个规律,就是倒着数(即从A25到A2的内容依次排列)第一个不为0的单元格减去A2即所得单元格,但是有个特列,就是如果倒着数第一个不为0的单元格如果是A2的话,那么就要输出A2内容,而不是输出第一个不为0的单元格(A2)减去A2成为0
所以,需要嵌套一个if语句,这样就得到如下公式:
=IF(MAX((A2:A25<>0)*ROW(A2:A25))=2,A2,INDIRECT("A"&MAX((A2:A25<>0)*ROW(A2:A25)))-A2)
将该公式复制到A26单元格里,然后按Ctrl+回车即可(这里是数组公式,需要同时按下Ctrl和回车键)
祝你成功!
对于你的补充,说没有成功,我专门试了一下,24个单元格依次输入数据,修改数据,结果都是对的,2003和2010结果一样,2007不清楚,应该也没问题,不知道是不是你的数据里有文本格式的单元格? 若有文本格式的单元格的话这个公式就有问题了,将公式里的A2:A24乘以数字1即可,即如下公式:
=IF(MAX((A1:A25*1<>0)*ROW(A1:A25))=2,A2,INDIRECT("A"&MAX((A1:A25*1<>0)*ROW(A1:A25)))-A2)
对于再次补充,百分比应该问题不大,最主要的是内容里不要出现文字,MAX函数在这里就是取最大值A1:A25*1<>0的意思是在A1:A25区域中的每个单元格不为0的时候返回1值,否则返回0值,然后该区域返回的这些值分别和对应单元格的行标相乘,如果返回值是0,那么乘以行标结果仍然是0,如果返回值是1,那么相乘结果为行标号,MAX((A1:A25*1<>0)*ROW(A1:A25))意思即为对对应区域的不为0的单元格行号取最大值,再通过indirect函数返回对应的单元格内的数据,然后再减去A2的数值
祝你成功!
所以,需要嵌套一个if语句,这样就得到如下公式:
=IF(MAX((A2:A25<>0)*ROW(A2:A25))=2,A2,INDIRECT("A"&MAX((A2:A25<>0)*ROW(A2:A25)))-A2)
将该公式复制到A26单元格里,然后按Ctrl+回车即可(这里是数组公式,需要同时按下Ctrl和回车键)
祝你成功!
对于你的补充,说没有成功,我专门试了一下,24个单元格依次输入数据,修改数据,结果都是对的,2003和2010结果一样,2007不清楚,应该也没问题,不知道是不是你的数据里有文本格式的单元格? 若有文本格式的单元格的话这个公式就有问题了,将公式里的A2:A24乘以数字1即可,即如下公式:
=IF(MAX((A1:A25*1<>0)*ROW(A1:A25))=2,A2,INDIRECT("A"&MAX((A1:A25*1<>0)*ROW(A1:A25)))-A2)
对于再次补充,百分比应该问题不大,最主要的是内容里不要出现文字,MAX函数在这里就是取最大值A1:A25*1<>0的意思是在A1:A25区域中的每个单元格不为0的时候返回1值,否则返回0值,然后该区域返回的这些值分别和对应单元格的行标相乘,如果返回值是0,那么乘以行标结果仍然是0,如果返回值是1,那么相乘结果为行标号,MAX((A1:A25*1<>0)*ROW(A1:A25))意思即为对对应区域的不为0的单元格行号取最大值,再通过indirect函数返回对应的单元格内的数据,然后再减去A2的数值
祝你成功!
全部回答
- 1楼网友:滚刀废物浮浪人
- 2021-02-11 20:27
fenghandib回答很正确
可以先用数字作个测试,如果不出现警告提示的话说明是数据类型的问题,而不是公式的问题
- 2楼网友:兮沫♡晨曦
- 2021-02-11 19:49
插入名称的方式可以做,但也得定义2-3个名称。
通常二十几层的嵌套式没有必要的。有没有不用IF嵌套的办法呢?
如果你只是要求A3-A24都=0(空格不算0),才给出结果A3-A2,那么完全可以用COUNTIF:
=if(countif(a3:a24,0)=row(a24)-row(a3),a3-a2,a2)
不知道是不是这个意思
- 3楼网友:蜜罐小熊
- 2021-02-11 19:18
根据你的意思,如果用if语句的话,很难实现,但是你的公式中的循环有个规律,就是倒着数(即从A25到A2的内容依次排列)第一个不为0的单元格减去A2即所得单元格,但是有个特列,就是如果倒着数第一个不为0的单元格如果是A2的话,那么就要输出A2内容,而不是输出第一个不为0的单元格(A2)减去A2成为0
所以,需要嵌套一个if语句,这样就得到如下公式:
=IF(MAX((A2:A25<>0)*ROW(A2:A25))=2,A2,INDIRECT("A"&MAX((A2:A25<>0)*ROW(A2:A25)))-A2)
将该公式复制到A26单元格里,然后按Ctrl+回车即可(这里是数组公式,需要同时按下Ctrl和回车键)
祝你成功!
- 4楼网友:零负荷的放任
- 2021-02-11 18:17
根据你的意思,如果用if语句的话,很难实现,但是你的公式中的循环有个规律,就是倒着数(即从A25到A2的内容依次排列)第一个不为0的单元格减去A2即所得单元格,但是有个特列,就是如果倒着数第一个不为0的单元格如果是A2的话,那么就要输出A2内容,而不是输出第一个不为0的单元格(A2)减去A2成为0
所以,需要嵌套一个if语句,这样就得到如下公式:
=IF(MAX((A2:A25<>0)*ROW(A2:A25))=2,A2,INDIRECT("A"&MAX((A2:A25<>0)*ROW(A2:A25)))-A2)
将该公式复制到A26单元格里,然后按Ctrl+回车即可(这里是数组公式,需要同时按下Ctrl和回车键)
插入名称的方式可以做,但也得定义2-3个名称。
通常二十几层的嵌套式没有必要的。有没有不用IF嵌套的办法呢?
如果你只是要求A3-A24都=0(空格不算0),才给出结果A3-A2,那么完全可以用COUNTIF:
=if(countif(a3:a24,0)=row(a24)-row(a3),a3-a2,a2)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯