有没有办法在一行中获得所有项目的数学组合,并根据所述组合进行数学等生成其他页面上的内容?例如{1,2,3} - > {1,2,3,1和2,1和3,2和3,1和2和3}
我需要根据与组合数组中标记的项对应的行,分别对列b和c的值求和。
截图清晰明了。我需要使用Sheet 1(全部是手动输入)来完整生成Sheet 2。
如果需要,它可以全部在同一张纸上而不是2张,但为了易读性,首选单独使用
编辑: 注意:我确实意识到这可能需要3个或更多的公式。另外,提前谢谢!
答案 0 :(得分:3)
此公式将从Sheet1列A:A:
中的字符串生成所有可能的组合=TRANSPOSE(SPLIT(TEXTJOIN("",1,ArrayFormula(IF(REGEXEXTRACT(DEC2BIN(ROW(INDIRECT("a1:a"&SUM(FACT(COUNTA(Sheet1!A:A))/(FACT(ROW(INDIRECT("a1:a"&COUNTA(Sheet1!A:A))))*FACT(COUNTA(Sheet1!A:A)-ROW(INDIRECT("a1:a"&COUNTA(Sheet1!A:A)))))))),COUNTA(Sheet1!A:A))&"1",REPT("(.)",COUNTA(Sheet1!A:A)+1))*1,TRANSPOSE({FILTER(Sheet1!A:A,Sheet1!A:A<>"")&",";"#"}),""))),",#",0))
将产生:
Item3
Item2
Item2,Item3
Item1
Item1,Item3
Item1,Item2
Item1,Item2,Item3
如果在sheet1中添加其他项目,则会调整公式。
请参阅此处的数学背景:
http://mymathforum.com/advanced-statistics/2567-non-repeating-combinations.html
在Sheet2中:A:我们加入了字符串。将此公式粘贴在B1 Sheet2中:
=QUERY(QUERY({TRANSPOSE(SPLIT(JOIN("",ArrayFormula(REPT(row(OFFSET(A1,,,COUNTA(A:A)))&",",LEN(OFFSET(A1,,,COUNTA(A:A)))-LEN(SUBSTITUTE(OFFSET(A1,,,COUNTA(A:A)),",",""))+1))),",")),ArrayFormula(SUMIF(Sheet1!A:A,TRANSPOSE(SPLIT(TEXTJOIN(",",1,A:A),",")),Sheet1!B:B))},"select Col1, sum(Col2) group by Col1 label sum(Col2) ''"),"select Col2")
结果是:
Item3 1000
Item2 750
Item2,Item3 1750
Item1 500
Item1,Item3 1500
Item1,Item2 1250
Item1,Item2,Item3 2250