求助:在Google Sheets中实现类似Python xplode功能的方法
Google Sheets 实现类似 Python Explode 的表格展开方案
公式解法(无需脚本)
假设原始数据在 A2:B 列(A列为Category,B列为Count),可以使用以下公式实现展开:
=LET( 数据源, A2:B, 分类列, INDEX(数据源,,1), 计数列, INDEX(数据源,,2), 拆分分类, BYROW(分类列, LAMBDA(分类项, SPLIT(分类项, ","))), 重复展开, BYROW(SEQUENCE(ROWS(数据源)), LAMBDA(行号, LET( 当前分类, INDEX(拆分分类, 行号), 当前计数, INDEX(计数列, 行号), IFERROR(FLATTEN(REPT(当前分类&"♦", 当前计数)), "") ) )), TRIM(FLATTEN(SPLIT(重复展开, "♦"))) )
说明:
- 用
SPLIT拆分每行的多选分类(假设分隔符为逗号,若实际是其他符号,替换,即可) - 通过
REPT让每个分类项重复对应Count次数,用♦作为临时分隔符(可替换为不会出现在分类中的字符) - 最后用
FLATTEN和SPLIT拆分并整理成单列结果,TRIM去除分类项前后的空格
AppScript 自定义函数解法
如果公式逻辑太复杂,可通过自定义脚本实现更直观的展开:
- 打开Google Sheets,点击「扩展程序」→「Apps 脚本」
- 粘贴以下代码并保存:
function explodeCategories(range) { const output = []; // 遍历每一行数据 range.forEach(row => { // 拆分分类并去除每个分类的前后空格 const categories = row[0].split(',').map(cat => cat.trim()); const count = row[1]; // 每个分类重复对应次数,添加到结果数组 categories.forEach(cat => { for (let i = 0; i < count; i++) { output.push([cat]); } }); }); return output; }
- 返回表格,在任意单元格输入
=explodeCategories(A2:B)即可得到展开结果
说明:
- 自动处理每行的多选分类拆分
- 支持任意分隔符(若实际不是逗号,修改
split(',')中的逗号即可) - 结果会以单列形式返回,自动填充所有展开后的分类项
内容的提问来源于stack exchange,提问作者Luan Nguyen Thanh
相关产品推荐
相关产品推荐

