在使用Google Apps脚本的Google表格中,我想获取单元格R33的值作为搜索字符串(简单),在S:S(我被难倒)中找到该搜索字符串的下一个实例,然后激活找到值的单元格(简单)。特别是,我无法弄清楚如何进行简单的搜索(本质上是一个vlookup)。我已经尝试在列中循环并比较如下:
function Vlookupscript( name, sheet, columnIndexWithNames, rowIndexToStart ) {
var maxRows = sheet.getLastRow() - 1;
var range = sheet.getRange( rowIndexToStart, columnIndexWithNames, maxRows );
var numRows = range.getNumRows();
var index = -1;
var cell;
var value;
for ( var i = 1; i <= numRows; i++ ) {
cell = range.getCell( i, 1 );
value = cell.getValue();
if ( value === name ) {
index = i;
}
}
return index;
}
其中name是要搜索的值。
然而,即使在使用logger.log(i)
的循环结束时,我也完全没有输出。我确信有一种更简单的方法;例如,我可以将列加载为数组并搜索该数组,获取索引,然后使用相应的索引激活单元格吗?
答案 0 :(得分:2)
有一种更快的方法。目前,每次要检查值时都会调用SpreadsheetApp,这需要一些时间。首先,你应该做maxRows = sheet.getLastRow()
并摆脱- 1
我将假设name
是您要搜索的值。那么您可以执行以下操作
values = SpreadsheetApp.getActiveSheet().getRange('S:S').getValues()
for (i = 0; i = values.lenght; i++){
if (values[i][0] == name) {
sheet.getRange(i+1, 19).activate()
return
}
}
你也可以用
来做值 values = SpreadsheetApp.getActiveSheet().getRange(1,19,maxRows-1,1).getValues()
前提是您已更改为- 1
变量的maxRows
。这将遍历所有值,如果值匹配,则将单元格设置为活动