我在一行中有一系列的单元格,它们的文本我想要Join()在一起。最终“连接的单元格”中的总字符数是约束条件,这就是为什么我需要对单元格进行分组并创建多个连接的单元格。我想动态计算最接近或等于该最大值的像元范围。单元格的顺序是固定的,因此一组单元格始终需要在一起。
我在这里概述了我想要的结果:
我可能需要一些帮助者专栏,但是我很难确定最好的方法。
答案 0 :(得分:1)
我将使用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)))
答案 1 :(得分: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,"")))