ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-17 22:18 | 显示全部楼层
本帖已被收录到知识树中,索引项:LAMBDA
X初始值设定为常量数组+@X提取+X存储多信息示例。

题意如下图所示:

图片.jpg
X初始值{40,0}中的40代表一共补贴的份数,0代表金额的初始值。随着循环,40会逐渐减小,0会逐渐累加补贴金额。

  1. =TAKE(REDUCE({40,0},OFFSET(A3:B3,,24-COLUMN(A:K)*2),LAMBDA(x,y,x+MIN(@x,@+y)*IF({1,0},-1,y))),,-1)
复制代码

图片.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-17 22:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
X初始值为0值数组+提取X最后一行值判断+DROP(X,-逻辑值)堆积+DROP掉X第一行示例


题意如下图所示:

图片.png
参考公式如下:
  1. =DROP(REDUCE(+C1:E1,B3:B190,LAMBDA(x,y,LET(s,TAKE(x,-1),t,y=INDEX(s,2),IF(y="",x,VSTACK(DROP(x,-t),HSTACK(1-t+@s,y,INDEX(s,3)*t+1)))))),1)
复制代码
图片.jpg
公式中,s为X最后一行,t判断当前的y是否等于s中的第二个值,返回TRUE或FALSE。后面IF函数判断如果y是空单元格,仍保留x不变。否则纵向堆积DROP(x,-t)和HSTACK(1-t+@s,y,INDEX(s,3)*t+1)的结果。最后DROP掉无用的第一行初始值。

TA的精华主题

TA的得分主题

发表于 2023-4-22 10:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
shaowu459 发表于 2023-4-16 23:46
X在每次循环的时候不是必然每次增加一行,也可以一次性增加多行。

T(t>0)就是生成rows(t)行空数据,然后与concat(t)&在一起,组成rows(t)重复数据了。居然看懂了。

TA的精华主题

TA的得分主题

发表于 2023-4-22 10:58 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-22 12:03 来自手机 | 显示全部楼层
alan57 发表于 2023-4-22 10:11
T(t>0)就是生成rows(t)行空数据,然后与concat(t)&在一起,组成rows(t)重复数据了。居然看懂了。

说明我写的还算清楚

TA的精华主题

TA的得分主题

发表于 2023-4-22 13:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
大佬就是大佬

TA的精华主题

TA的得分主题

发表于 2023-5-7 21:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
shaowu459 发表于 2023-4-16 20:02
X如果省略,则第二参数(y)中的第一个值将变成X的初始值,不参与LAMBDA函数体部分运算。

例如,设定X初 ...

第1参数忽略,把第二参数的第一个值当初始值,从第二参数的第二个值开始循环

TA的精华主题

TA的得分主题

发表于 2023-5-7 21:54 | 显示全部楼层
shaowu459 发表于 2023-4-16 20:51
LAMBDA函数体运算部分,可以提取X的一部分进行运算或判断。

例如,提取X第一行TAKE(X,1),提取X最后一行 ...

take取出来的单值一般还是个数组,要注意,尤其是和if配合的时候。前面加@,如果是区域,先用+转数组,再@。

TA的精华主题

TA的得分主题

发表于 2023-5-7 22:11 | 显示全部楼层
shaowu459 发表于 2023-4-16 21:04
使用@X或者@+X可以直接提取X最左上角的值,用于LAMBDA函数体部分运算。
推衍一下,可以改变之前说的堆叠顺 ...

这种的还真没用过,真厉害。
vstack(循环产生的数组[hstack(要继续判断的值放开头,第二个值,其他值)],x)

TA的精华主题

TA的得分主题

发表于 2023-5-7 22:14 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-26 20:01 , Processed in 0.036410 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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