我想请你帮忙。
我正在尝试制作一个自动放置数据的电子表格,因此我需要一个验证步骤,以检查该值是否与范围内的值匹配。
我需要检查COLUMN A中的值是否与COLUMN H范围内的值匹配。如果匹配,则将OK放到COLUMN F,如果没有放入ERR。
下一步是将成功验证的数据复制到另一张表
如果验证了该值,则应用程序应将此行中的数据复制到特定工作表。
例如:将正确验证值AAA,因此应将其第2行和第6行(Period,Data1,Data2,Data3)复制到特定位置的AAA表(句点)。
Sheet1的第2行 - > AAA表格第11行
第6行表单Sheet1 - > AAA表格第12行
以下是电子表格Spreadsheet link
的链接我希望这对一个问题来说不是太多,而且一切都很清楚。
非常感谢你的帮助。
答案 0 :(得分:1)
尝试以下代码......
function validate() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var data = ss.getRange(2, 1, ss.getLastRow() - 1,5).getValues();
var valsToCheck = ss.getRange(2, 8, ss.getLastRow() - 1).getValues();
valsToCheck = [].concat.apply([], valsToCheck).filter(String);
var opt = [];var dataToCopied = [];
for (var i = 0; i < data.length; i++) {
if (valsToCheck.indexOf(data[i][0]) != -1) {
opt.push(["OK"]);
dataToCopied.push(data[i])
} else {
opt.push(["ERR"]);
}
}
ss.getRange(2, 6, opt.length, 1).setValues(opt);
var month = ["JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"];
for(var k=0;k<dataToCopied.length;k++){
var rowNo = month.indexOf(dataToCopied[k][1].toString().toUpperCase());
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(dataToCopied[k][0]).getRange(rowNo+3,2,1,3).setValues([[dataToCopied[k][2],dataToCopied[k][3],dataToCopied[k][4]]])
}
}