连接动态开始行和结束行之间的单元格

Concatenate cells between dynamic start and end row

我正在尝试将多个单元格连接成一个单元格,如果它们位于具有特定字符串的两个单元格之间。

例如:Element 列中有 modalOpen 和 modalClose,它们之间是 modalFields。在 modalOpen 和 modalClose 之间,我需要将带有 Element modalField 的每一行的名称添加到 modalOpen 行的输出列中。

模态字段的数量可以在 2 - 20 之间变化。

=ARRAYFORMULA(REGEXREPLACE(TRIM(TRANSPOSE(SPLIT(QUERY(FILTER(IF(A2:A="modalClose","",IF(A2:A="modalOpen","♠"&B2:B&" with ","<"&B2:B&">,")),A2:A<>""),,2^99),"♠"))),"(, )(\<[^<>]\>),$"," and "))

结果:

Test1 with <1>, <2> and  <3>
Test2 with <1>, <2>, <3> and  <4>

删除 C 列中的所有内容并将其粘贴到 C2 单元格中:

=ARRAYFORMULA(TRIM(SUBSTITUTE(IFERROR(VLOOKUP(B2:B, 
 SPLIT(TRANSPOSE(SPLIT(QUERY(IF(B2:B<>"", 
 IF(A2:A="modalOpen", "♥"&B2:B&"♦"&B2:B&" with", 
 IF(A3:A="modalClose", "& <"&B2:B&">", "<"&B2:B&">,")), )
 ,,999^99), "♥")), "♦"), 2, 0)), ">, & ", "> & ")))