Google Sheets按首个文本字符拆分列为单位与产品名称实现方案
Google Sheets批量拆分单位与产品名称列脚本方案
需求说明
- 日常需批量处理200+行单列数据,需拆分为「单位」「产品名称」两列,拆分后产品名称列不得残留前置多余空格
- 原Excel固定列宽拆分可实现理想效果,需适配Google Sheets环境直接操作
- 原有固定宽度拆分脚本按固定字符数截取,部分行拆分后存在多余空格,需调整截取逻辑:从产品名称段第一个有效文字字符位置开始截取,跳过中间所有空格
拆分效果参考


可直接使用的修正脚本
function splitUnitAndProduct() { const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 数据起始行,无表头填1,有表头按表头所在行下一行填 const dataStartRow = 2; const lastDataRow = activeSheet.getLastRow(); const sourceData = activeSheet.getRange(dataStartRow, 1, lastDataRow - dataStartRow + 1, 1).getValues(); const splitResult = []; for (let i = 0; i < sourceData.length; i++) { const rawStr = sourceData[i][0].toString(); if (!rawStr.trim()) { splitResult.push(["", ""]); continue; } // 取首位字符作为单位 const unitVal = rawStr.substring(0, 1).trim(); // 截取首位之后的内容,自动定位第一个有效中/英文字符位置,跳过所有前置空格 const restContent = rawStr.substring(1); const firstValidCharPos = restContent.search(/[\u4e00-\u9fa5a-zA-Z]/); const productNameVal = firstValidCharPos >= 0 ? restContent.substring(firstValidCharPos).trim() : ""; splitResult.push([unitVal, productNameVal]); } // 拆分结果从B列开始写入,不覆盖原A列数据 activeSheet.getRange(dataStartRow, 2, splitResult.length, 2).setValues(splitResult); }
使用方法
- 打开要处理的Google表格,点顶部「扩展程序」-「Apps Script」进脚本编辑器
- 把编辑器里默认的空代码全删掉,粘贴上面的脚本点保存
- 第一次运行会弹授权提示,按步骤给脚本开表格访问权限就行,授权完再点一次运行就自动批量拆分完了
- 脚本不会覆盖你原来A列的原始数据,拆出来的单位会写到B列、产品名写到C列;如果你的数据没有表头,把代码里
dataStartRow的值改成1即可 - 脚本自动识别有效字符位置,不会像固定宽度拆分那样残留前置空格,处理数百行数据几秒钟就能跑完
内容的提问来源于stack exchange,提问作者Genny
相关产品推荐
相关产品推荐

