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

如何使用Google Sheets脚本填充重复单元格的对应状态数据

解决Google Sheets中重复标识的状态批量填充问题

实现思路

  1. 先扫描所有行,建立**标识(A列)→对应状态(B列)**的映射表,只记录每个标识第一次出现的非空状态
  2. 再次遍历所有行,将对应标识的状态填充到B列的空单元格中
  3. 最后把处理完的数据写回工作表

完整脚本代码

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('状态填充完成!');
}

使用说明

  1. 打开你的Google Sheets文档
  2. 点击顶部菜单栏的扩展程序 → Apps 脚本
  3. 在脚本编辑器中删除默认代码,粘贴上面的脚本
  4. 点击保存按钮,给脚本起个名字(比如FillStatuses)
  5. 点击运行按钮,首次运行需要授权权限(按照提示完成授权即可)

注意事项

  • 如果同一个A列标识对应多个不同的非空B列状态,脚本会保留第一次遇到的状态,忽略后续的不同状态。如果需要处理这种冲突情况,可以在收集状态的循环里添加判断逻辑(比如抛出提示,或者取最后一次出现的状态)
  • 无对应状态的标识行,B列会保持空值不变
  • 建议先备份数据再运行脚本,避免意外修改

内容的提问来源于stack exchange,提问作者Myra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:32:43