如何将工作表多列字符串拆分后转为多行,适配E列右侧全部列
适配多固定列的拆分脚本修改方案
你的需求是保留A到D列的固定值,将E列及右侧所有列按逗号拆分,按最长拆分结果生成多行,固定列自动重复填充。原脚本默认仅将第一列作为固定列,所以处理范围受限,调整解构规则即可适配需求,修改后代码如下:
const result = range => range.flatMap(([a, b, c, d, ...v]) => { const { vv, len } = v.reduce((o, c) => { const t = c.split(","); o.vv.push(t); o.len = o.len < t.length ? t.length : o.len; return o; }, { vv: [], len: 0 }); const temp = vv.map(e => e.concat(Array(len - e.length).fill(""))); return temp[0].map((_, c) => [a, b, c, d, ...temp.map(r => r[c])]); });
改动说明
- 将原脚本中仅提取第一列作为固定值的逻辑,调整为提取前四列(对应A、B、C、D列)作为固定值,所有固定值会在生成的多行中自动重复填充
- 剩余参数
v会自动包含E列及E列右侧的所有列,无需额外指定列数,新增的右侧列也会自动参与拆分逻辑 - 拆分逻辑保留原有的按最长拆分结果对齐的规则,不足长度的列会自动补空值
使用时直接选中全部需要处理的数据区域(包含A列到最后一列待拆分内容)调用函数即可。
内容的提问来源于stack exchange,提问作者Phronimos
相关产品推荐
相关产品推荐

