1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 比较典型的有条件连续问题,求公式

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-3-11 21:22 | 显示全部楼层
edwin11891 发表于 2025-3-11 17:07
第二问合并起来:

image.png
肯定是咱俩用的不是一个版本,你应该用的是WPS吧,我用的是M365,今天又遇到了同一个公式在两个系统上结果不一样的情况。
N年前,我工作中一直用微软的office,后来由于交接工作的原因,因为对方一直用WPS,为了方便电脑资料的交接,我也改用WPS,但发现很多公式结果是错的,主要是一些复杂的公式,当时有些臆想不到,给工作造成了很大的被动。从此以后,我基本上没有再碰过WPS,直到WPS新版出现后,听说了一些新的函数,确实也吸引了我,我安装进行测试过,确实WPS比以前强大好用了许多,但是由于已经习惯office了,并且这几年都订阅了M365正版,所以再没有安装WPS。

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-3-11 21:40 | 显示全部楼层
人有言兮是然 发表于 2025-3-11 14:30
=MAX(LEN(TEXTSPLIT(TEXTJOIN(,,(A2:AE2)*(A2:AE2>=3)),"0")))
第一问的最大天数,我用此公式计算出。我给 ...

单纯求最大这个问题好解决,难一点的是把各组都找出来。
如果数字位数不确定,可以用条件公式都转化为1位字符,比如:符合要求的为1,不符合要求的为0。
套路公式为
=max+len+textsplit+concat+if

TA的精华主题

TA的得分主题

发表于 2025-3-11 22:29 | 显示全部楼层
本帖最后由 edwin11891 于 2025-3-12 05:54 编辑
mykitami 发表于 2025-3-11 21:22
肯定是咱俩用的不是一个版本,你应该用的是WPS吧,我用的是M365,今天又遇到了同一个公式在两个系统上 ...

我正好相反!本来一直是M365和WPS都安装,直到有一次OFFICE导致系统慢如蜗牛,就直接把M365卸载了。
在新版WPS下,公式是没有问题的,见附件图片。
微信图片_20250311222504.png

TA的精华主题

TA的得分主题

发表于 2025-3-11 22:34 | 显示全部楼层
mykitami 发表于 2025-3-11 20:48
套入公式以后,发现结果不正确。(我用的是M365,有可能WPS下运行是正确的,这种事常发生的,我以前遇到 ...

WPS下检验这个公式没有问题,单元格数据是两位数都是正确的。

TA的精华主题

TA的得分主题

发表于 2025-3-11 23:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 edwin11891 于 2025-3-12 05:55 编辑
mykitami 发表于 2025-3-11 21:22
肯定是咱俩用的不是一个版本,你应该用的是WPS吧,我用的是M365,今天又遇到了同一个公式在两个系统上 ...

我的WPS是新版的64位内测版。

TA的精华主题

TA的得分主题

发表于 2025-3-12 09:35 | 显示全部楼层
第一问的第二个问题,理解上还有歧义。一种理解是满足条件的连续值之和的最大值,二是对应最大天数的连续值之和。从前面楼上各位的答案来看,都属于第一种,我认为楼主的原意可能是第二种。
对于第二种理解:
  1. =LET(t,TEXTSPLIT(REPT(",",A2<3)&CONCAT(A2:AE2&","),,","&SEQUENCE(3,,0)&","),n,LEN(t)-LEN(SUBSTITUTE(t,",",""))+1,s,FILTER(t,n=MAX(n)),HSTACK(MAX(n),EVALUATE(SUBSTITUTE(s,",","+"))))
复制代码

TA的精华主题

TA的得分主题

发表于 2025-3-12 10:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
经测试,第一问的第二个问题,有两种理解:一种是满足条件的连续值之和的最大值,第二种是对应最大连续天数的连续值之和。
前面各位的解答,基本属于第一种;个人理解,楼主的原意可能属于第二种。
第一问按照第二种理解的公式可以为:
  1. =LET(t,TEXTSPLIT(REPT(",",A2<3)&CONCAT(A2:AE2&","),,","&SEQUENCE(3,,0)&","),n,LEN(t)-LEN(SUBSTITUTE(t,",",""))+1,s,FILTER(t,n=MAX(n)),HSTACK(MAX(n),EVALUATE(SUBSTITUTE(s,",","+"))))
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-3-12 18:43 | 显示全部楼层
本帖最后由 tcdatongye 于 2025-3-12 18:55 编辑
mykitami 发表于 2025-3-11 20:48
套入公式以后,发现结果不正确。(我用的是M365,有可能WPS下运行是正确的,这种事常发生的,我以前遇到 ...

精简下,两个合一(wps)
=LET(a,REGEXP(CONCAT(IF(A2:AE2<3,"s",","&A2:AE2)),"(\d+,?){3,}"),HSTACK(COUNTA(a),TEXTJOIN(CHAR(10),,a)))

TA的精华主题

TA的得分主题

发表于 2025-3-12 19:12 | 显示全部楼层
tcdatongye 发表于 2025-3-12 18:43
精简下,两个合一(wps)
=LET(a,REGEXP(CONCAT(IF(A2:AE2

再精简一下,TEXTJOIN套一次就够了:
  1. =LET(a,REGEXP(TEXTJOIN(",",,IF(A2:AE2<3,"s",A2:AE2)),"(\d+,){2,}\d+"),HSTACK(COUNTA(a),TEXTJOIN(CHAR(10),,a)))
复制代码


借用这个方法,第一问可以:
  1. =LET(t,REGEXP(TEXTJOIN("+",,IF(A2:AE2<3,"s",A2:AE2)),"(\d+\+){2,}\d+"),n,LEN(t)-LEN(SUBSTITUTE(t,"+",""))+1,s,FILTER(t,n=MAX(n)),HSTACK(MAX(n),EVALUATE(s)))
复制代码

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

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

GMT+8, 2025-4-2 00:02 , Processed in 0.023719 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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