如何使用Google Sheets脚本填充重复单元格的对应状态数据
解决Google Sheets中重复标识的状态批量填充问题
实现思路
- 先扫描所有行,建立**标识(A列)→对应状态(B列)**的映射表,只记录每个标识第一次出现的非空状态
- 再次遍历所有行,将对应标识的状态填充到B列的空单元格中
- 最后把处理完的数据写回工作表
完整脚本代码
function fillDuplicateStatuses() { // 获取当前活动工作表 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 获取所有有数据的行(从第1行到最后一行,A到B列) const dataRange = sheet.getDataRange(); const data = dataRange.getValues(); // 存储标识与对应状态的映射 const statusMap = {}; // 第一步:收集每个标识对应的非空状态 for (let i = 0; i < data.length; i++) { const id = data[i][0]; // A列值 const status = data[i][1]; // B列值 // 仅当标识存在且状态非空时,才存入映射表(避免覆盖已存在的状态) if (id && status && !statusMap[id]) { statusMap[id] = status; } } // 第二步:批量填充状态到对应标识的所有行 for (let i = 0; i < data.length; i++) { const id = data[i][0]; // 如果当前行B列为空,且映射表中有该标识的状态,则填充 if (id && !data[i][1] && statusMap[id]) { data[i][1] = statusMap[id]; } } // 第三步:将处理后的数据写回工作表 dataRange.setValues(data); SpreadsheetApp.getUi().alert('状态填充完成!'); }
使用说明
- 打开你的Google Sheets文档
- 点击顶部菜单栏的扩展程序 → Apps 脚本
- 在脚本编辑器中删除默认代码,粘贴上面的脚本
- 点击保存按钮,给脚本起个名字(比如
FillStatuses) - 点击运行按钮,首次运行需要授权权限(按照提示完成授权即可)
注意事项
- 如果同一个A列标识对应多个不同的非空B列状态,脚本会保留第一次遇到的状态,忽略后续的不同状态。如果需要处理这种冲突情况,可以在收集状态的循环里添加判断逻辑(比如抛出提示,或者取最后一次出现的状态)
- 无对应状态的标识行,B列会保持空值不变
- 建议先备份数据再运行脚本,避免意外修改
内容的提问来源于stack exchange,提问作者Myra
相关产品推荐
相关产品推荐

