Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 基于数学组合处理行_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 基于数学组合处理行

Google apps script 基于数学组合处理行,google-apps-script,google-sheets,Google Apps Script,Google Sheets,有没有一种方法可以得到一行中所有项目的数学组合,并根据该组合在另一页上进行数学运算等生成内容?e、 g.{1,2,3}->{1,2,3,1和2,1和3,2和3,1和2和3} 我需要根据与组合数组中标记的项目对应的行,分别对b列和c列的值求和 为了清晰起见,截图。我需要使用表1,这是所有的手动输入,以生成整个表2 如有必要,可将其全部放在同一张纸上,而不是2张,但为了便于阅读,最好将其分开 编辑: 注:我知道这可能需要3个或更多的公式。另外,提前谢谢 问题#1。得到所有可能的组合 此公式将根据

有没有一种方法可以得到一行中所有项目的数学组合,并根据该组合在另一页上进行数学运算等生成内容?e、 g.{1,2,3}->{1,2,3,1和2,1和3,2和3,1和2和3}

我需要根据与组合数组中标记的项目对应的行,分别对b列和c列的值求和

为了清晰起见,截图。我需要使用表1,这是所有的手动输入,以生成整个表2

如有必要,可将其全部放在同一张纸上,而不是2张,但为了便于阅读,最好将其分开

编辑: 注:我知道这可能需要3个或更多的公式。另外,提前谢谢

问题#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))
如果在sheet1中添加另一项,公式将进行调整

请参见此处的数学背景:

问题#2。通过连接字符串求和 在第2页A:A中,我们连接了字符串。将此公式粘贴在B1活页2中:

=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
问题#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))
如果在sheet1中添加另一项,公式将进行调整

请参见此处的数学背景:

问题#2。通过连接字符串求和 在第2页A:A中,我们连接了字符串。将此公式粘贴在B1活页2中:

=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

是否有一个函数可以吐出所有不同的可能性₃Cₓ ? 如果不是,您可能需要谷歌应用程序脚本。如果需要使用脚本,请添加该标记?我不知道,但我已经添加了该标记。谢谢你的建议:)有没有一个函数可以吐出所有不同的可能性₃Cₓ ? 如果不是,您可能需要谷歌应用程序脚本。如果需要使用脚本,请添加该标记?我不知道,但我已经添加了该标记。谢谢你的建议:)max,我还不太清楚如何验证它,但我确实有几个问题:我是否要将其中的+1改为+2,以便让它在c列上执行相同的操作?另外,由于我是一个在工作表上擦洗的函数,看起来您可以使用工作表2的a列返回并找到b列的总和值。。考虑到这一点,我猜尝试按b列排序(保留行)不会起作用,对吗?哎呀,我忘了在这个问题上抓住你@MaxMakhrov使其适用于C列替换
Sheet1!B:B
表1!C:C
。哦,天哪,我甚至在找B参考资料。现在我觉得自己很傻。非常感谢。我可以想象,我可以利用你发布的内容,找出如何使用第三张表来查找前5个值和相应的行(我是一个磨砂工,但我可以阅读和学习得足够好)。看起来一切都很好,非常感谢@maxmakhrov。我还不太熟悉如何验证它max,但我确实有几个问题:我是否要将其中的+1改为+2,让它在c列上执行相同的操作?另外,由于我是一个在工作表上擦洗的函数,看起来您可以使用工作表2的a列返回并找到b列的总和值。。考虑到这一点,我猜尝试按b列排序(保留行)不会起作用,对吗?哎呀,我忘了在这个问题上抓住你@MaxMakhrov使其适用于C列替换
Sheet1!B:B
表1!C:C
。哦,天哪,我甚至在找B参考资料。现在我觉得自己很傻。非常感谢。我可以想象,我可以利用你发布的内容,找出如何使用第三张表来查找前5个值和相应的行(我是一个磨砂工,但我可以阅读和学习得足够好)。看起来一切都很好,非常感谢@maxmakhrov。