问题 #1。获取所有可能的组合
此公式将从 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
问题 #2。通过连接的字符串求和
在 Sheet2 A: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