Google Sheets中按特定规则合并动态垂直数组的公式求解
Google Sheets 动态数组合并方案(指定规则)
针对你需要的「A列每个元素后紧跟完整B列数据,循环遍历A列」的合并规则,以下是两种可行的动态公式方案,无需手动调整范围,会随A/B列数据自动更新:
方案一(推荐:逻辑清晰,高效)
=TOCOL(MAP(A2:INDEX(A:A,COUNTA(A:A)),LAMBDA(a,HSTACK(a,B2:INDEX(B:B,COUNTA(B:B))))),1)
逻辑拆解:
A2:INDEX(A:A,COUNTA(A:A)):动态锁定A列的非空数据范围(自动排除表头和后续空行)MAP(..., LAMBDA(a, ...)):遍历A列的每个元素a,对每个元素执行后续操作HSTACK(a, B2:INDEX(B:B,COUNTA(B:B))):将当前A列元素a与完整的B列数据横向拼接成一组TOCOL(...,1):把所有横向拼接的组纵向展开成单列,参数1用于忽略过程中产生的空值
方案二(基于字符串拼接实现)
=FLATTEN(HSTACK(A2:INDEX(A:A,COUNTA(A:A)),FLATTEN(SPLIT(REPT(JOIN("|",B2:INDEX(B:B,COUNTA(B:B))&"|"),COUNTA(A:A)),"|"))))
逻辑拆解:
JOIN("|",B2:...):将B列所有数据用|拼接成单个字符串REPT(...,COUNTA(A:A)):按A列的元素数量重复上述字符串,生成包含多组B列数据的长字符串SPLIT(..., "|"):将长字符串拆分回数组,FLATTEN确保数组为垂直结构HSTACK(...):将A列元素与对应重复的B列数组横向拼接,最后FLATTEN展开为单列
示例验证
当A列数据为A、B、C、D,B列数据为1、2、3时,两个公式都会输出:A、1、2、3、B、1、2、3、C、1、2、3、D、1、2、3,完全匹配你需要的结果。
内容的提问来源于stack exchange,提问作者QuestionAsker
相关产品推荐
相关产品推荐

