ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

多选N的问题,且多个条件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-29 10:27 | 显示全部楼层
Tongbaby2020 发表于 2024-8-29 09:15
一样,我也抄了半天,才弄好

把你抄的附件贴出来看看

TA的精华主题

TA的得分主题

发表于 2024-8-29 11:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-29 13:43 | 显示全部楼层

你不是人啊。。。。。。。


大神。。。。。。。。。

TA的精华主题

TA的得分主题

发表于 2024-8-29 16:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-29 17:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
bjzzxhzl 发表于 2024-8-29 16:02
冬佬一出手就知道有没有

顺序乱了,严格来讲,答案不正确

TA的精华主题

TA的得分主题

发表于 2024-8-29 19:50 | 显示全部楼层

利用C(m,n)=C(m,m-n)的特性优化组合公式:
  1. let
  2.     fx_Combination = (lst as nullable list, n as number) as nullable list =>
  3.         if n=0 then {null}
  4.             else if n=1 then List.Transform(lst, each {_})
  5.                 else let
  6.                     cnt = List.Count(lst)
  7.                 in
  8.                     if n <= cnt/2 then List.TransformMany(@fx_Combination(lst, n-1), each List.Skip(lst, List.PositionOf(lst, List.Last(_), Occurrence.Last)+1), (x,y) => x & {y})
  9.                         else List.Transform(@fx_Combination(lst, cnt-n), each List.RemoveItems(lst, _))
  10.     ,

  11.     Source = {"0".."9"},
  12.     Combinations = fx_Combination(Source, 4)
  13. in
  14.     Combinations
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-30 10:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册



提供一个思路,看能不能改成用递归实现:
  1. let
  2.     源 = Table.AddIndexColumn(Excel.CurrentWorkbook(){[Name="倍率"]}[Content],"id",1,1),
  3.     添加x = Table.AddColumn(源, "x", each 源),
  4.     展开x = Table.ExpandTableColumn(添加x, "x", {"成员", "倍率", "id"}, {"x.成员", "x.倍率", "x.id"}),
  5.     筛选x = Table.SelectRows(展开x, each [x.id]>[id]),
  6.     添加y = Table.AddColumn(筛选x, "y", each 源),
  7.     展开y = Table.ExpandTableColumn(添加y, "y", {"成员", "倍率", "id"}, {"y.成员", "y.倍率", "y.id"}),
  8.     筛选y = Table.SelectRows(展开y, each [y.id]>[x.id]),
  9.     添加z = Table.AddColumn(筛选y, "z", each 源),
  10.     展开z = Table.ExpandTableColumn(添加z, "z", {"成员", "倍率", "id"}, {"z.成员", "z.倍率", "z.id"}),
  11.     筛选z = Table.SelectRows(展开z, each [z.id]>[y.id]),
  12.     合并 = Table.Combine({筛选x,筛选y,筛选z}),
  13.     乘积 = Table.AddColumn(合并, "自定义", each List.Product({[倍率],[x.倍率],[y.倍率],[z.倍率]}))
  14. in
  15.     乘积
复制代码


0.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-30 16:22 | 显示全部楼层
PQ参考解法(来凑个热闹~)
微信截图_20240830161836.png

多串N问题AA.zip

18.63 KB, 下载次数: 2

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-8-31 11:43 | 显示全部楼层
deadzlq 发表于 2024-8-30 16:22
PQ参考解法(来凑个热闹~)

试了下acc,第一列有A、B、C、D这4行该如何去除?

  1. let
  2.     源 = Table.AddIndexColumn(Excel.CurrentWorkbook(){[Name="倍率"]}[Content],"id",1,1),
  3.     a=List.Accumulate({2..Table.RowCount(源)},源,(x,y)=>
  4.         let
  5.             添加= Table.AddColumn(x, Text.From(y), each 源),
  6.             展开=Table.ExpandTableColumn(添加,Text.From(y),Table.ColumnNames(源),{Text.From(y)&".成员", Text.From(y)&".倍率", Text.From(y)&".id"}),
  7.             筛选= Table.SelectRows(展开, each Record.ToList(_){Table.ColumnCount(源)*y-1} > Record.ToList(_){Table.ColumnCount(源)*y-4})
  8.         in
  9.             x&筛选)
  10. in
  11.     Table.AddColumn(a,"乘积",each List.Product(List.Skip(List.Alternate(Record.ToList(_),2,1,2))))
复制代码
0.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-1 08:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ThxAlot 发表于 2024-8-29 19:50
利用C(m,n)=C(m,m-n)的特性优化组合公式:

貌似不行,或者不能达到根据数据区域更改后自动识别
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 15:30 , Processed in 0.041239 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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