如何获取包含值I' m的单元格的行索引和列索引?
这是两张纸的例子," Grave"和" Data_grave":
我的代码,下面应该......
但是,我在第17行(搜索循环后面的行)收到错误消息:
无法将4,4转换为(类)
我该如何解决?
function myFind() {
var ss = SpreadsheetApp.getActive(), rowNum = [], collNum = [];
var findData = ss.getSheetByName('Grave').getRange("A2").getValue();
var searchData = ss.getSheetByName('Data_grave').getDataRange().getValues();
for(var i=1, iLen=findData.length; i<iLen; i++) {
for(var j=0, jLen=searchData.length; j<jLen; j++) {
for(var k=0, kLen=searchData[0].length; k<kLen; k++) {
var find = findData;
if(find == searchData[j][k]) {
rowNum.push([j+1]);
collNum.push([k+2]);
}
}
}
}
ss.getSheetByName('Data_grave').getRange(rowNum,collNum).setValue("wow");
}
答案 0 :(得分:1)
正如Adelin评论的那样:错误消息表明您没有正确使用.getRange(rowNum,collNum)
。 That method expects two numbers,但您提供了两个数组。
当你发现&#34;&#34;您正在搜索的单元格,而不是push()
(将rowNum
和colNum
视为数组),您只想使用:
var rowNum = j+1;
var colNum = k+2;
您还可以使用布尔值found
作为所有循环的附加退出条件,以便在成功时停止搜索。
function myFind() {
var ss = SpreadsheetApp.getActive(), rowNum = [], collNum = [];
var findData = ss.getSheetByName('Grave').getRange("A2").getValue();
var searchData = ss.getSheetByName('Data_grave').getDataRange().getValues();
var found = false;
for(var i=1, iLen=findData.length; i<iLen && !found; i++) {
for(var j=0, jLen=searchData.length; j<jLen && !found; j++) {
for(var k=0, kLen=searchData[0].length; k<kLen && !found; k++) {
var find = findData;
if(find == searchData[j][k]) {
var rowNum = j+1;
var collNum = k+2;
found = true;
}
}
}
}
ss.getSheetByName('Data_grave').getRange(rowNum,collNum).setValue("wow");
}