Google Sheets多单元格遍历匹配:按规则批量更新Column3值
Google Sheets 批量更新匹配行的Column3值
函数方案(适合临时手动处理)
直接在新列(比如D2单元格)输入以下公式,下拉填充后,再把D列的值复制粘贴回C列即可:
=IF(AND(LEFT(A2,4)="S006", B2="match_against"), CONCAT(REGEXEXTRACT(C2, "(.*_\D+)"), 1210 + IFERROR(VALUE(REGEXEXTRACT(A2, "_(\d+)")), 0)), C2)
公式拆解:
AND(LEFT(A2,4)="S006", B2="match_against"):筛选出Column1以S006开头且**Column2等于匹配标识match_against**的目标行REGEXEXTRACT(C2, "(.*_\D+)"):提取Column3的固定前缀(比如CD12A_TPE),兼容不同长度的前缀格式IFERROR(VALUE(REGEXEXTRACT(A2, "_(\d+)")), 0):从Column1中提取下划线后的数字,无下划线则默认取01210 + ...:用初始末尾数字加上提取的后缀数字,得到更新后的末尾数CONCAT(...):把前缀和新数字拼接成最终的Column3值- 不满足条件的行,直接保留原Column3值
如果你的匹配逻辑是Column1与Column2内容完全相等,只需把条件改成AND(LEFT(A2,4)="S006", A2=B2)即可。
Google Apps Script方案(适合批量自动化处理)
如果表格数据量大,或者需要重复执行更新,用脚本更高效:
- 打开你的Google Sheets,点击顶部菜单「扩展程序」→「Apps 脚本」
- 清空默认代码,粘贴以下脚本:
function updateColumn3() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const data = sheet.getDataRange().getValues(); const matchFlag = "match_against"; // 替换为你的匹配标识 const initialNumber = 1210; const prefix = "CD12A_TPE"; data.forEach((row, index) => { const col1 = row[0]; // Column1对应A列 const col2 = row[1]; // Column2对应B列 if (index === 0) return; // 跳过表头行 if (col1 && col1.startsWith("S006") && col2 === matchFlag) { // 提取Column1的后缀数字 const suffixMatch = col1.match(/_(\d+)$/); const suffixNum = suffixMatch ? parseInt(suffixMatch[1]) : 0; // 更新Column3的值 row[2] = `${prefix}${initialNumber + suffixNum}`; // Column3对应C列 } }); sheet.getDataRange().setValues(data); }
- 修改脚本中的
matchFlag为你的实际匹配标识,按需调整initialNumber和prefix - 点击脚本编辑器顶部的「运行」按钮,授权后即可完成批量更新
内容的提问来源于stack exchange,提问作者Maximilian Hallett
相关产品推荐
相关产品推荐

