ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] Microsoft 365:X檔案大揭秘

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-7 17:14 | 显示全部楼层
本帖已被收录到知识树中,索引项:LAMBDA
本帖最后由 shaowu459 于 2023-8-7 17:21 编辑
cutecpu 发表于 2023-8-7 16:16
=REDUCE(+A2:B19,B2:B19,LAMBDA(x,y,VSTACK(DROP(x,1),HSTACK(@x,IF(y,y,MATCH(,FREQUENCY(-(x=@x)*DROP(x, ...

感谢跟帖支持
后部分处理也可以用UNIQUE函数:
  1. =REDUCE(+A2:B19,B2:B19,LAMBDA(x,y,VSTACK(DROP(x,1),HSTACK(@x,IF(y,y,@UNIQUE(VSTACK(ROW(1:19),TOCOL(x/(TAKE(x,,1)=@x))),,1))))))
复制代码
但就这个问题来说,不使用REDUCE函数的这种方法,群里还有一些比较短的公式(核心用UNIQUE+VSTACK组合,MAP一下自动溢出或下拉均可),因为跟这个帖的主题关系不大,就不一一列示了。


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-9 17:20 | 显示全部楼层
每次循环后的值堆叠在x左侧,下次循环引用第一列内容运算,保留每次运算的结果。


题目描述:10个小孩围成一个圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。然后所有的小孩同时将手中的糖果一半给右边的小孩,糖果为奇数的人可向老师要一块。问,经过这样几次后大家手中的糖果的块数一样多?每个人各有多少块?


参考公式:
  1. =REDUCE(+A2:A11,A2:A100,LAMBDA(x,y,IF(AND(@x=TAKE(x,,1)),x,HSTACK(CEILING(TAKE(x,,1)/2+VSTACK(TAKE(x,-1,1),TAKE(x,9,1))/2,2),x))))
复制代码
图片.jpg
图片.png

公式简要说明如下:
=REDUCE(
    +A2:A11,        初始每人糖块数量作为x初始值
    A2:A100,        引用单元格区域,控制循环次数(和单元格值无关),一共循环99次,可以使用A1:A30、1:1等代替
    LAMBDA(x, y,
        IF(
            AND(@x = TAKE(x, , 1)),   如果第一列的第一个值等于第一列所有值(每个人糖数量相等)就停止运算保留x不变
            x,
            HSTACK(
                CEILING(              每个人分完糖后,如果是奇数,就向上舍入到最接近偶数(因为可以再跟老师要一块)
                    TAKE(x, , 1) / 2 +     x最左侧列存储每个人糖数量的最新值。数量除以2,加上别人给的一半
                        VSTACK(TAKE(x, -1, 1), TAKE(x, 9, 1)) / 2,   每个人糖数量的一半,将最后一个人的拿到第一个去
                    2
                ),
                x
            )
        )
    )
)



TA的精华主题

TA的得分主题

发表于 2023-8-9 17:21 | 显示全部楼层
  1. =REDUCE("",MID(A2,ROW($1:99),1),LAMBDA(x,y,LET(s,TAKE(TEXTSPLIT(x,"("),,-2),IF(y=")",TEXTBEFORE(x,"(",-2)&REPT(INDEX(s,2),@s),x&IF(COUNT(-y)*ISERR(-RIGHT(x)),"(",)&y))))
复制代码
全部都用左括號來判斷
log1.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-8-10 13:47 | 显示全部楼层
  1. =REDUCE(+A3:A12,ROW(1:99),LAMBDA(x,y,LET(_a,TAKE(x,,1),_b,VSTACK(TAKE(_a,-1),DROP(_a,-1))/2+_a/2,_c,_b+MOD(_b,2),IF(AND(@_a=_a),x,HSTACK(_c,x)))))
复制代码
抄老师的,发一个。
image.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-18 15:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
循环替代x字符串内容的另外一个例子:找出最长有效的括号字符串。

题目比较简单,只发一下公式和截图:
问题1:返回最长有效的括号字符串
  1. =LET(s,ROW($1:39),t,MID(A2,s,TOROW(s)),u,TOCOL(IF(REDUCE(t,s,LAMBDA(m,n,SUBSTITUTE(m,"()",)))="",t,\),3),@SORTBY(u,-LEN(u)))
复制代码
图片.png

问题2:返回最长有效的括号字符串长度
  1. =LET(s,ROW($1:39),t,MID(A2,s,TOROW(s)),MAX(LEN(IF(REDUCE(t,s,LAMBDA(m,n,SUBSTITUTE(m,"()",)))="",t,""))))
复制代码
图片.png

TA的精华主题

TA的得分主题

发表于 2023-9-1 15:15 | 显示全部楼层
本帖最后由 onthetrip 于 2023-9-1 15:18 编辑

开始的还能勉强看懂,从山脉数组开始就直接放弃了。这山脉数组我想了一下,用VBA都不知道应该怎么写^^

TA的精华主题

TA的得分主题

发表于 2023-9-1 16:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请问一下,IFS的这个参数是什么意思。
PBWB(%HOJ4~Q[P@}LQ8}JBF.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-9-1 16:56 | 显示全部楼层
onthetrip 发表于 2023-9-1 16:06
请问一下,IFS的这个参数是什么意思。

除了前面的情况之外,其他所有情况都返回U。1代表恒成立,U是返回值。
比如说A情况返回xx,B情况返回XX,C情况返回XX,其他所有情况都返回U,最后两个参数就是1和U。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-9-1 17:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
shaowu459 发表于 2023-9-1 16:56
除了前面的情况之外,其他所有情况都返回U。1代表恒成立,U是返回值。
比如说A情况返回xx,B情况返回XX ...

哦,明白了,谢谢

TA的精华主题

TA的得分主题

发表于 2023-9-1 20:04 | 显示全部楼层
onthetrip 发表于 2023-9-1 15:15
开始的还能勉强看懂,从山脉数组开始就直接放弃了。这山脉数组我想了一下,用VBA都不知道应该怎么写^^

真心同意!山脉数组之前勉强看懂一点,还觉得蛮有意思,越向后越蒙圈,直接放弃了!哎!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 12:21 , Processed in 0.045498 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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