ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2023-5-18 14:39 | 显示全部楼层
本帖已被收录到知识树中,索引项:LAMBDA
shaowu459 发表于 2023-4-16 23:07
在连续问题的统计上,使用当前的y和X最后一行的值比较,判断是否连续,以采取不同的操作。

以下公式,根 ...

请教超版一个问题,这一题的第一参数是0,或者常量,都可以正常计算,但是改为引用单元格就出现了错误,不知道怎么理解
请教.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-18 14:42 | 显示全部楼层
一杯绿茶来了 发表于 2023-5-18 14:39
请教超版一个问题,这一题的第一参数是0,或者常量,都可以正常计算,但是改为引用单元格就出现了错误, ...
后面有提取X第一行,也就是提取标题,并且用@提取第一个这个操作。直接@B3:C3单元格区域就会出错。所以把第一参数单元格引用前面加上一个+就行了,REDUCE(+B3:C3

6楼的文字描述有这个内容。

TA的精华主题

TA的得分主题

发表于 2023-5-19 10:42 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-19 11:21 | 显示全部楼层
shaowu459 发表于 2023-4-16 23:00
在循环过程中,更新X中的某个值。

例如,以下公式根据B3:C9单元格区域判断姓名出现的次数(请忽略此例子 ...
判断当前的y值是否在x中存在,如果存在就更新x中值的一个示例:
=REDUCE(A1:G1,A2:A7,LAMBDA(x,y,LET(s,TEXTSPLIT(y,,"、"),t,OFFSET(y,,,,7),REDUCE(x,s,LAMBDA(m,n,IF(OR(m=n),IF(TAKE(m,,1)=n,IFERROR(m+t/ROWS(s),m),m),VSTACK(m,IF(A1:G1=A1,n,t/ROWS(s)))))))))
图片.jpg

求出每个人的业绩多人做业绩平分.rar

9.83 KB, 下载次数: 7

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-20 13:03 | 显示全部楼层
我还在学呀哦欧,你们已经出国了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-20 13:04 | 显示全部楼层
贺达勇 发表于 2023-5-20 13:03
我还在学呀哦欧,你们已经出国了。

升级到Microsoft 365,立马跟上

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-20 18:06 | 显示全部楼层
本帖最后由 shaowu459 于 2023-5-20 18:07 编辑

每次循环,对X进行重组,重组后的结果作为新的X示例,X的行数不变。

如下图所示,A:M列是一些销售数据,要求对每个国家的销售额求和后排序。
图片.png

P2单元格输入以下公式:
  1. =REDUCE(HSTACK(A2:A8,MMULT(B2:M8,V1:V12+1)),ROW(1:7),LAMBDA(x,y,UNIQUE(VSTACK(FILTER(x,TAKE(x,,-1)=SMALL(x,y)),x))))
复制代码
图片.jpg
公式思路说明:
1)MMULT(B2:M8,V1:V12+1)部分将每行数据求和,生成每个国家12个月销售额合计的数组;
2)HSTACK(A2:A8,MMULT(B2:M8,V1:V12+1))部分将国家名称和销售额合并在一起生成多行两列的数组,作为REDUCE函数的第一参数,也就是X的初始值;
3)REDUCE函数的第二参数设置为ROW(1:7),循环7次,因为源数据一共7行;
4)UNIQUE(VSTACK(FILTER(x,TAKE(x,,-1)=SMALL(x,y)),x))部分:FILTER(x,TAKE(x,,-1)=SMALL(x,y))部分筛选出X最后一列的销售额=第y个销售额最小值的所有结果(最小值行可能多余一行,不影响),然后使用VSTACK函数堆积在X上方,最后去重。比如说当y=1时,筛选出销售额最小的行,堆积在X上方,去重后下面销售额最小的行就会被去掉,此时实现的效果是最小值的行被挪动到了X的第一行;当y=2时,筛选出销售额第二小的行,堆积在X最上方,去重后,下面第二小的行也会被去掉,此时第二小的行是X的第一行,第一小的行是X的第二行。以此类推,循环到第7次的时候,就会将第7小的行(也就是最大销售额的行)筛选添加到X的第一行,这样就实现了从大到小的排序。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-5-23 10:04 | 显示全部楼层
shaowu459 发表于 2023-4-16 23:00
在循环过程中,更新X中的某个值。

例如,以下公式根据B3:C9单元格区域判断姓名出现的次数(请忽略此例子 ...

=LET(
    a, {"姓名", "次数"},
    b, B4:B9,
    c, UNIQUE(b),
    d, MAP(c, LAMBDA(x, SUMPRODUCT((b = x) * 1))),
    VSTACK(a, HSTACK(c, d))
)

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-23 10:11 | 显示全部楼层
我有一头小驴驴 发表于 2023-5-23 10:04
=LET(
    a, {"姓名", "次数"},
    b, B4:B9,

嗯,如果真的是要解决这个问题,就简单一些了,这个例子主要是为了介绍充分利用x,判断y是不是和x里的某个一样这个点,一样的话就更新x中的值,不一样就堆积。找不到特别合适的例子,所以用了这么一个数据,说明了下“(请忽略此例子的实际意义)

TA的精华主题

TA的得分主题

发表于 2023-5-30 22:31 | 显示全部楼层
shaowu459 发表于 2023-4-16 23:00
在循环过程中,更新X中的某个值。

例如,以下公式根据B3:C9单元格区域判断姓名出现的次数(请忽略此例子 ...

这都多少天以后了,我才看懂,真牛掰啊
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 13:03 , Processed in 0.047322 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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