【问题标题】:Sum of all number combinations excluding repetition Excel所有数字组合的总和,不包括重复 Excel
【发布时间】:2018-04-27 07:05:40
【问题描述】:

这个投票最多的答案Sum all combinations Excel or Google Spreadsheets 接近我需要的 - 但是我需要一个解决方案,它可以使组合保持有序并根据此顺序排除重复。 IE。 1 2 3 4 的数据集将显示以下乘积:

1 1+2 1+3​​ 1+4 1+2+3 1+2+4 1+3+4 1+2+3+4

2 2+3 2+4 2+3+4

3 3+4

4

1 3 4 5 6 10

2 5 6

3 7

4

在没有脚本的情况下,这在 Google 表格/Excel 中是否可行?

谢谢

【问题讨论】:

  • 是的,看看这个...应该还有其他的,虽然像 1+2+4, 1+3+4, 2+3+4... 吗?我在想一个解决方案可能涉及以某种方式以二进制计数,并且应该有 2^4-1 组合,即 15。
  • 啊,是的 - 好点 1+2+4 等是可能的。每个数字代表一种食品和相关的化学属性,可以将其与另一种产品混合,从而得出两者中化学物质的总和。所以是的,每个独特的组合都需要不重复。

标签: excel google-sheets combinations


【解决方案1】:

这是一个按顺序显示总和的公式

=ArrayFormula(sort(" "&transpose(split(SUBSTITUTE(substitute(textjoin("+",true,{if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,"",column(A1:D1)),B1:B15&";"}),"+;",";"),";+",";"),";")),1,true))

这个公式将按照它们生成的顺序给出总和,但是它必须与第一个公式结合才能以正确的顺序得到它们

=ArrayFormula(mmult(if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,0,column(A1:D1)),transpose(column(A1:D1))^0))

给这个

=ArrayFormula(sort({" "&transpose(split(SUBSTITUTE(substitute(textjoin("+",true,{if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,"",column(A1:D1)),B1:B15&";"}),"+;",";"),";+",";"),";")),ArrayFormula(mmult(if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,0,column(A1:D1)),transpose(column(A1:D1))^0))},1,true))

如果您使用实际值而不是列号,会出现以下情况

=ArrayFormula(sort({" "&transpose(split(SUBSTITUTE(substitute(textjoin("+",true,{if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,"",column(A1:D1)),if(row(A1:A15)>0,";")}),"+;",";"),";+",";"),";")),ArrayFormula(mmult(if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,0,A1:D1),transpose(column(A1:D1))^0))},1,true))

【讨论】:

  • 嗨,Tom - 这似乎是一个解决方案,但我不确定如何实现它。它似乎引用了范围 A1:D1 和 B1:B15。在 col B 中输入值确实会影响 col E 中的输出,但对 col F 中的和积没有影响。您能否解释一下我将如何将其用于用户输入的值(注意实际数据将是 550.3、240、50.7 之类的值, 130.1)。感谢您迄今为止的宝贵时间!
  • 是的,这更像是一个演示,我认为它需要更多的工作才能对您有用。它假设 B 列目前为空,并从 A-D 列的列号(因此为 1-4)中获取值,但应该可以修改它以从列表中获取值。
猜你喜欢
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
相关资源
最近更新 更多