Google sheets 根据最接近或等于特定最大值的总和对单元格范围进行分组

Google sheets 根据最接近或等于特定最大值的总和对单元格范围进行分组,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,我在一行中有一系列单元格,我想将其文本()连接在一起。最后一个“连接单元”中的总字符数是限制条件,这就是为什么我需要对单元进行分组并创建多个连接单元的原因。我想动态计算最接近或等于最大值的单元格范围。单元格的顺序是固定的,所以一组单元格总是需要在一起 我在这里概述了我期望的结果: 我可能需要一些helper列,但我很难找到最佳方法。我将使用两个helper行 第一个单元格将计算每组的累积和,第一个单元格中的=A2,后续单元格具有: =IF(B1+A3>$C6,B1,A3+B1) 第二个

我在一行中有一系列单元格,我想将其文本()连接在一起。最后一个“连接单元”中的总字符数是限制条件,这就是为什么我需要对单元进行分组并创建多个连接单元的原因。我想动态计算最接近或等于最大值的单元格范围。单元格的顺序是固定的,所以一组单元格总是需要在一起

我在这里概述了我期望的结果:


我可能需要一些helper列,但我很难找到最佳方法。

我将使用两个helper行

第一个单元格将计算每组的累积和,第一个单元格中的
=A2
,后续单元格具有:

=IF(B1+A3>$C6,B1,A3+B1)
第二个将为每组提供一个数字,第一个单元格为
1
,后续单元格具有:

=IF(B3>A3,A4,A4+1)
应复制上述两个公式,直到至少比原始表格多出一个单元格,以便下面的公式可以“看到”它们应该停止的位置

然后将每组的数字添加到您拥有的小表格旁边,并使用一些公式。第一个公式给出了文本中的地址。第二个使用范围来连接文本:

=SUBSTITUTE(CELL("address",OFFSET(A$2,0,MATCH(C8,$4:$4,0)-1))&":"&CELL("address",OFFSET(A$2,0,MATCH(C8+1,$4:$4,0)-2)),"$","")

=TEXTJOIN("-",0,OFFSET(A$2,0,MATCH(C8,$4:$4,0)-1,1,MATCH(C8+1,$4:$4,0)-MATCH(C8,$4:$4,0)))

没有辅助行,您能做到吗

是的,在Google Sheets中,您可以使用Sumif创建一个运行总计数组,因此您可以通过检查运行总计是否小于或等于10来获取第一组列的小计。然后,对于后续组,您可以减去之前所有组的总和(这当然需要辅助单元格),然后重复该过程

获得小计后,可以使用类似的方法将文本单元格连接在一起

要获取小计,请在B6中:

=ArrayFormula(max(if((sumif(column(A$1:O$1),"<="&column(A$1:O$1),A$1:O$1)-sum(B$5:B5))<=10,sumif(column(A$1:O$1),"<="&COLUMN(A$1:O$1),A$1:O$1)-sum(B$5:B5))))

=ArrayFormula(max(if)(sumif(column)(A$1:O$1),“这只是一个范围A:O还是这个范围可以更宽更薄?它更宽,接近1300列。太棒了!正是我想要的。非常感谢您的大力帮助!
=ArrayFormula(textjoin(",",true,if((sumif(column(A$1:O$1),"<="&column(A$1:O$1),A$1:O$1)-sum(B$5:B5)<=10)*(sumif(column(A$1:O$1),"<="&column(A$1:O$1),A$1:O$1)-sum(B$5:B5)>0),A$2:O$2,"")))