如何根据另一单元格变更自动在Google Sheet单元格填入工作表名称
解决方案
1. 编写触发脚本实现变更追踪
替换你现有的mySheetName函数,用下面的onEdit触发器脚本,实现当B列内容修改时,自动将当前工作表名称写入对应C列单元格(仅在内容变更时更新,保留历史记录):
function onEdit(e) { const range = e.range; const sheet = range.getSheet(); // 仅处理B列的编辑事件 if (range.getColumn() === 2) { const targetCell = sheet.getRange(range.getRow(), 3); // 获取当前工作表名称并写入C列对应行 targetCell.setValue(sheet.getName()); } // 处理工作表重命名时的批量更新(可选:若需要同步C列中旧表名到新表名) // 若不需要此功能可删除以下代码块 if (e.changeType === 'OTHER' && e.source.getActiveSheet().getName() !== sheet.getName()) { const oldName = sheet.getName(); const newName = e.source.getActiveSheet().getName(); const dataRange = sheet.getDataRange(); const values = dataRange.getValues(); // 遍历C列,替换旧表名为新表名 for (let i = 0; i < values.length; i++) { if (values[i][2] === oldName) { values[i][2] = newName; } } dataRange.setValues(values); } }
脚本说明
- 核心逻辑:监测B列(第2列)的编辑操作,一旦单元格内容修改,立即将当前工作表名称写入对应行的C列(第3列),自动覆盖旧值,确保C列始终记录最后一次变更的版本(工作表名)。
- 可选逻辑:当工作表被重命名时,自动批量更新该工作表C列中所有旧的表名为新名称。若你希望保留变更发生时的原始表名(即使后续工作表改名),可删除这部分代码。
2. 设置条件格式实现高亮
- 选中C列整列(点击列标
C)。 - 点击顶部菜单栏「格式」→「条件格式」。
- 在右侧面板中,设置规则为:
- 格式规则:自定义公式
- 输入公式:
=C1=CELL("filename",A1) - 设置高亮样式(比如填充黄色)。
- 点击「完成」即可。
格式说明
公式=C1=CELL("filename",A1)会自动获取当前工作表名称,当C列单元格值与当前表名一致时,触发高亮样式,无需手动更新。
3. 注意事项
- 脚本需要授权:首次运行脚本时,会弹出权限请求,按提示授权即可(仅对你的表格有访问权限)。
- 复制工作表的处理:复制工作表后,新表的
onEdit触发器会自动生效,在新表编辑B列时,会写入新表的名称。 - 历史记录保留:脚本仅在B列内容变更时更新C列,未修改的行C列值会保持原有记录,不会被覆盖。
内容的提问来源于stack exchange,提问作者Raghad
相关产品推荐
相关产品推荐

