如何在Google Sheets中根据姓名匹配自动修改下拉列表值
实现Google Sheets自动匹配姓名并更新状态的两种方法
方法1:使用公式快速生成状态
- 适用场景:不需要手动修改C列状态,完全依赖B列和G列的匹配关系自动更新
- 操作步骤:
- 选中C2单元格
- 输入公式:
=IF(COUNTIF(G:G, B2)>0, "IN", "OUT") - 将公式下拉填充到C列所有需要的行
- 说明:公式会检查当前B列姓名是否在G列存在,存在则显示
IN,否则显示OUT;后续B列或G列内容更新时,C列会自动同步变化
方法2:使用Google Apps Script实现自动更新(支持手动修改)
- 适用场景:需要灵活控制,既支持自动更新状态,也允许手动修改C列的值
- 操作步骤:
- 打开目标Google表格,点击顶部菜单栏的扩展程序→Apps脚本
- 删除编辑器内的默认代码,粘贴以下脚本:
function onEdit(e) { const sheet = e.source.getActiveSheet(); const range = e.range; // 仅处理B列(第2列)或G列(第7列)的编辑操作,跳过表头行 if ((range.getColumn() === 2 || range.getColumn() === 7) && range.getRow() > 1) { const lastRow = sheet.getLastRow(); const bValues = sheet.getRange(`B2:B${lastRow}`).getValues().flat(); const gValues = sheet.getRange(`G2:G${lastRow}`).getValues().flat(); // 遍历B列所有行,匹配G列姓名后更新C列状态 bValues.forEach((name, index) => { const targetRow = index + 2; if (gValues.includes(name)) { sheet.getRange(targetRow, 3).setValue("IN"); } }); } }
- 点击编辑器顶部的保存按钮,给脚本命名(比如「AutoUpdateINOUT」),关闭脚本编辑器
- 扩展功能:如果需要当姓名从G列移除时,自动将C列改回
OUT,可把脚本里的forEach循环部分替换为:
bValues.forEach((name, index) => { const targetRow = index + 2; if (gValues.includes(name)) { sheet.getRange(targetRow, 3).setValue("IN"); } else { sheet.getRange(targetRow, 3).setValue("OUT"); } });
- 说明:脚本会在编辑B列或G列内容时自动触发,匹配的C列会被设为
IN(或移除匹配后设为OUT),不影响手动修改其他行的状态
内容的提问来源于stack exchange,提问作者Crazy8
相关产品推荐
相关产品推荐

