我有一系列单元格连接,其文本我想要Join()在一起。最终“连接单元格”中的总字符数是约束,这就是我需要对单元格进行分组并创建多个连接单元格的原因。我想动态计算最接近或等于该最大值的单元格范围。细胞序列是固定的,因此一组细胞总是需要在一起。
我在这里概述了我期望的结果:
我可能需要一些帮助列,但我很难找到最好的方法。
我会使用2个辅助行。
第一个将计算每组的累积总和,第一个细胞中的=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表格中,您可以使用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))))
然后在C6中加入字符串:
=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,"")))