Sheet1与Sheet2列值匹配时将Sheet2对应列设为true的实现方法咨询
实现方案(分Google Sheets 和 Excel两种场景)
一、Google Sheets (Google Apps Script 版本)
- 打开你的表格,点击顶部菜单栏「扩展程序」-「Apps 脚本」打开脚本编辑器
- 删除默认生成的空白代码,替换为下方代码,按需修改配置项后即可运行
function updateMatchedRows() { // 配置项:COL_TO_UPDATE填写要更新的列序号,比如D列是4、E列是5,自行修改 const COL_TO_UPDATE = 4; const UPDATE_VALUE = "true"; const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet1 = ss.getSheetByName("Sheet1"); const sheet2 = ss.getSheetByName("Sheet2"); // 提取Sheet1 A列所有非空值 const sheet1AValues = sheet1.getRange("A:A").getValues().flat().filter(val => val !== ""); // 提取Sheet2所有行数据 const sheet2AllValues = sheet2.getDataRange().getValues(); // 遍历Sheet2做匹配更新 for (let i = 0; i < sheet2AllValues.length; i++) { // Sheet2 C列对应数组索引为2(数组从0开始计数) const curMatchValue = sheet2AllValues[i][2]; if (sheet1AValues.includes(curMatchValue)) { sheet2.getRange(i + 1, COL_TO_UPDATE).setValue(UPDATE_VALUE); } } SpreadsheetApp.getUi().alert("匹配更新完成"); }
- 首次运行需要给脚本授权,授权通过后直接执行
updateMatchedRows函数即可。
二、Excel (VBA版本)
- 打开Excel文件,按
Alt + F11调出VBA编辑器 - 右键点击左侧你的工作簿名称,选择「插入」-「模块」,粘贴下方代码
Sub UpdateMatchedRows() ' 配置项:COL_TO_UPDATE填写要更新的列序号,比如D列是4、E列是5,自行修改 Const COL_TO_UPDATE As Integer = 4 Const UPDATE_VALUE As String = "true" Dim sheet1 As Worksheet, sheet2 As Worksheet Dim sheet1ARng As Range, cell As Range, findRng As Range Set sheet1 = ThisWorkbook.Sheets("Sheet1") Set sheet2 = ThisWorkbook.Sheets("Sheet2") ' 锁定Sheet1 A列非空单元格范围 Set sheet1ARng = sheet1.Range("A1:A" & sheet1.Cells(Rows.Count, "A").End(xlUp).Row) ' 遍历Sheet2 C列做匹配 For Each cell In sheet2.Range("C1:C" & sheet2.Cells(Rows.Count, "C").End(xlUp).Row) Set findRng = sheet1ARng.Find(what:=cell.Value, LookIn:=xlValues, lookat:=xlWhole) If Not findRng Is Nothing Then sheet2.Cells(cell.Row, COL_TO_UPDATE).Value = UPDATE_VALUE End If Next cell MsgBox "匹配更新完成" End Sub
- 按
F5直接运行即可完成更新。
内容的提问来源于stack exchange,提问作者Marc Eli
相关产品推荐
相关产品推荐

