You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:在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(重复展开, "♦")))
)

说明:

  1. 用 SPLIT 拆分每行的多选分类(假设分隔符为逗号,若实际是其他符号,替换,即可)
  2. 通过 REPT 让每个分类项重复对应Count次数,用♦作为临时分隔符(可替换为不会出现在分类中的字符)
  3. 最后用 FLATTEN 和 SPLIT 拆分并整理成单列结果,TRIM 去除分类项前后的空格

AppScript 自定义函数解法

如果公式逻辑太复杂,可通过自定义脚本实现更直观的展开:

  1. 打开Google Sheets,点击「扩展程序」→「Apps 脚本」
  2. 粘贴以下代码并保存:
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;
}
  1. 返回表格,在任意单元格输入 =explodeCategories(A2:B) 即可得到展开结果

说明:

  • 自动处理每行的多选分类拆分
  • 支持任意分隔符(若实际不是逗号,修改split(',')中的逗号即可)
  • 结果会以单列形式返回,自动填充所有展开后的分类项

内容的提问来源于stack exchange,提问作者Luan Nguyen Thanh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:12:39