如何在Google Sheets中按条件拼接单元格并生成值列表?
Google Sheets 换行分隔元素笛卡尔积拼接方案
一、原生函数解决方案
假设待处理的两个单元格分别为A1(第一个单元格)和B1(第二个单元格),可以用以下公式直接生成拼接后的列表:
=FLATTEN(ARRAYFORMULA(SPLIT(A1, CHAR(10)) & " " & TRANSPOSE(SPLIT(B1, CHAR(10)))))
公式说明:
SPLIT(A1, CHAR(10)):将A1内的内容按换行符拆分为纵向数组TRANSPOSE(SPLIT(B1, CHAR(10))):将B1内的内容拆分后转置为横向数组ARRAYFORMULA:自动完成两个数组的笛卡尔积拼接(公式中的" "是拼接分隔符,可根据需求替换为"-"、"_"等)FLATTEN:将二维的拼接结果转换为纵向一维列表,匹配预期的换行展示格式
二、Apps Script 自定义函数解决方案
如果需要更灵活的逻辑控制(比如过滤空元素、自定义复杂拼接规则),可以用自定义脚本实现:
- 打开目标Google Sheets文档,点击「扩展程序」→「Apps脚本」
- 粘贴以下代码并保存项目:
function JOIN_CELL_ELEMENTS(cellA, cellB) { // 拆分单元格内容为数组,同时过滤空行 const arrA = cellA.toString().split('\n').filter(item => item.trim() !== ''); const arrB = cellB.toString().split('\n').filter(item => item.trim() !== ''); const result = []; // 遍历完成所有元素的拼接 arrA.forEach(itemA => { arrB.forEach(itemB => { result.push(`${itemA} ${itemB}`); // 修改此处的分隔符或拼接逻辑即可自定义规则 }); }); return result; }
- 返回表格,在任意单元格输入
=JOIN_CELL_ELEMENTS(A1, B1)即可获取结果
内容的提问来源于stack exchange,提问作者MAA
相关产品推荐
相关产品推荐

