在sheet1中,我具有在单元格A2和单元格B2中更新的数据。更新它们后,我想运行一个脚本,该脚本将A2中的值与另一个工作表中的Q列相匹配,当找到匹配项时,使用sheet1中单元格B2中的数据更新R列中的相关行。我发现的所有变体都希望移动整行或没有用。我是Script的初学者,因为我已经使用VBA多年了,而且似乎只有模糊的相似之处。
答案 0 :(得分:0)
像这样吗?
function onSheetEdit(e)
{
// get the source range that was edited
var sourceRange = e.range;
// get the associated sheet
var sourceSheet = sourceRange.getSheet();
// get the sheet name
var sourceSheetName = sourceSheet.getName();
if(sourceSheetName == "Sheet1")
{
// if the range edited was one we carea bout
if(sourceRange.getA1Notation() == "A2" || sourceRange.getA1Notation() == "B2")
{
// get the values
var values = sourceSheet.getRange("A2:B2").getDisplayValues()[0];
// open the destination sheet
var destinationSheet = SpreadsheetApp.openById("1ldtZdDiml01_Drlp2WvZ3CaSgABoubauok3BcVq11eI").getSheetByName("Sheet1");
// find the column number of the column we're going to look against
var searchColumnNumber = destinationSheet.getRange("Q1").getColumn();
// get all of the values for the column
var destinationSheetColumnRValues = destinationSheet.getSheetValues(1, searchColumnNumber, -1, 1);
// find the row that has the value we want
var foundRow = destinationSheetColumnRValues.reduce(function(accumulator, currentValue, index) {
if(currentValue[0] == values[0] && accumulator == -1) return index;
return accumulator;
}, -1);
// if we found it
if(foundRow != -1)
{
// set the value in the destination sheet
destinationSheet.getRange("R" + (foundRow + 1 )).setValue(values[1]);
}
}
}
}
您需要将此功能设置为工作表上的on edit
触发器。有关更多详细信息,请参见https://developers.google.com/apps-script/guides/triggers/events。
根据情况,可以使此代码更高效。例如,如果目标列始终被排序,或者搜索的列从不改变,等等。