ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4519|回复: 12

[求助] if函数公式是否可以简化

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-10-30 13:56 | 显示全部楼层 |阅读模式
需要一次判断5个列的数值,<=0就停止,>0就计数1,例5个数都大于零结果为5,第三个数<=0,则结果为2.详见图片。我这个公式能实现,就是请问有没有简化的公式,不然如果判断的数据多了就很麻烦。
示例:
A
B
C
D
E
F
12
5
0
4
6
2
f4单元格的公式=IF(E4<=0,0,IF(D4<=0,1,IF(C4<=0,2,IF(B4<=0,3,IF(A4<=0,4,5)))))
依次判断edcba列数据并计数,小于=0则停止,大于0就计数1(累计计数1-5,最大到5).
请问有没有简化的公式?

TA的精华主题

TA的得分主题

发表于 2018-10-31 18:15 | 显示全部楼层
  1. =IFERROR(LOOKUP(10,IF(A1:D1<=0,1,""),{4;3;2;1}),5)
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-5 09:38 | 显示全部楼层
本帖最后由 pethell 于 2018-11-5 11:14 编辑

[tr] [/tr]
[tr] [/tr]
A
B
C
D
E
公式
5
0
4
0
6
5
 
=IFERROR(LOOKUP(10,IF(A1:D1<=0,1,""),{4;3;2;1}),5)
 


我是想先判断e2,如果e2<=0,则f2=0,否则计数1,借着判断d2,如果d2<=0,则  f2=1,否则计数2,接着判断c2,你给我的公式,无论前面数怎么变,f2总是=5
首先感谢楼上的回复,不知道是不是我没描述清楚,还是怎么回事,数值改变,结果都是5,我重新描述了一下问题,还烦请再帮我看看。

TA的精华主题

TA的得分主题

发表于 2019-3-11 15:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-3-25 18:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 jaffedream 于 2019-3-25 20:07 编辑

方法一:{=SUM(IF(OFFSET(A4,0,MATCH(0,A4:E4,0),1,5-MATCH(0,A4:E4,0))<=0,0,1))},如0不重复,返回正确值。MATCH(0,A4:E4,0)返回第一个0出现的位置。OFFSET返回排除了最左侧到0的内容,IF将剩余内容进行判断,SUM累加。
方法二:{=SUM(IF(OFFSET(A4,0,MATCH(2,1/(A4:E4=0),1),1,5-MATCH(2,1/(A4:E4=0),1))<=0,0,1))},如0重复,也能返回正确值。{MATCH(2,1/(A4:E4=0))返回最后一个0出现的位置。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-28 14:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 pethell 于 2019-4-28 14:56 编辑

感谢楼上几位大拿的指导,回头我好好学习下,我后来是用连续求和实现的,不过我的方法,判断地 数值少了,还行,多的话就不适用了,还是你这个好,我好好研究下

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-28 15:35 | 显示全部楼层
本帖最后由 pethell 于 2019-4-28 15:40 编辑

研究了一下上面几个公式,其中乱花葬的公式我虽然不知道lookup里10的含义,不过可以使用这个公式了,因为我是从e列往回倒推连续大于0的计数,这个公式在判断e列为0时发生了错误,我略微调整了下,=IFERROR(LOOKUP(10,IF(A2:e2<=0,1,""),{4;3;2;1;0}),5),这个就完全满足了我的要求,如果判断的数多了就在{4;3;2;1;0}),5这块相应增加就可以了;
太帅被人打 的公式是判断有几个大于0的数,但没有考虑连续的条件;
jaffedream  的公式好像也没有考虑联系大于0的条件。
总之,三位的公式给我的启发很大,十分感谢。如果乱花葬能告诉我公式里10的含义就更好了。

TA的精华主题

TA的得分主题

发表于 2019-6-11 18:03 | 显示全部楼层
10改为1,是一样的,如图
1.png

点评

不明觉厉  发表于 2019-8-23 16:01

TA的精华主题

TA的得分主题

发表于 2022-3-22 00:31 | 显示全部楼层
1,=IFERROR(LOOKUP(1,0/(A2:E2=0),{4;3;2;1;0}),"5")
2,=IFERROR(5-MATCH(2,0/(A2:E2=0)),"5")

TA的精华主题

TA的得分主题

发表于 2022-9-8 08:51 | 显示全部楼层
本帖最后由 mx54865 于 2022-9-8 08:53 编辑

=MATCH(0,A5:G5,0)-1C:\Users\Administrator\Desktop
企业微信截图_1662598270150.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-22 23:34 , Processed in 0.036032 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表