[英]Get row & column indices of found value
如何獲取包含要查找的值的單元格的行索引和列索引?
這是“ Grave”和“ Data_grave”兩張紙的示例:
我的代碼如下:
但是,我在第17行(搜索循環之后的行)收到一條錯誤消息:
無法將4,4轉換為(class)
我該如何解決?
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");
}
正如Adelin所說:錯誤消息表明您沒有正確使用.getRange(rowNum,collNum)
。 該方法需要兩個數字 ,但是您要為其提供兩個數組。
當您“找到”了您要搜索的單元格,而不是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");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.