【发布时间】:2018-02-28 14:20:31
【问题描述】:
我有一个数据库,我想根据第一列中的值是否属于另一个值数组来查找行索引
假设 A 列和 B 列具有以下值: 答:111、112、113、114、... 乙:112、113
我想在 A 列中找到在 B 列的值数组中具有值的行。
到目前为止,这是我的代码。问题:indexOf 没有检测到值,在 Logger.log 函数中测试时返回 = -1
var ss = SpreadsheetApp.getActiveSpreadsheet(),
sheet = ss.getActiveSheet(),
values = sheet.getRange(7,2,5,1).getValues(), //This would be 'Column B'
rows = sheet.getLastRow();
for (var i = 2; i <= 15; i++){
Logger.log(values);
Logger.log(sheet.getRange(7,1).getValue());
Logger.log(values.indexOf(sheet.getRange(7,1).getValue()));
if (values.indexOf(sheet.getRange(i,1).getValue()) != -1) { //column 1 because 'Column A'
Logger.log("Success");
}
}
使用 Logger.log 函数,我已经能够证明它所提取的值实际上与数组中的某个值匹配......但由于某种原因,它没有检测到它......
出于我的目的,我还尝试了以下方法:
for (var i = 2; i <= rows; i++){
for (var j = 1; j <= values.length; j++){
if (values[j] == sheet.getRange(i,1).getValue()){
Logger.log("values[j] works. Found in cell " + i + ",1 con un valor que busco");
}
}
}
但是这里Logger.log函数没有被调用,这意味着if语句没有被满足,代表同样的主要问题。测试单元格中的数组值无法满足数组中的值之一。
提前感谢您的帮助。我真的已经搜索了几个小时,似乎无法找到这个特定问题的答案......
对于它的价值,我尝试这样做的原因是因为我想根据条目数更新数据库(在本例中为 A 列),但只更新某些行(我指出在 B 列)。
【问题讨论】:
-
@I'-'我是正确的...
getRange(7,1,5,1)是从 A7(第 7 行,第 1 列)开始的范围,长 5 行,宽 1 列,即A7:A12. -
我很抱歉造成混乱。该示例经过调整以简化它,但也许我做得不好。最初,“值”来自不同的工作表,所以唯一重要的是它是一个值的来源,应该与我想要找到它的范围不同。很抱歉!
-
我改变了它以减少混乱......再次抱歉......