我正在寻找一些帮助,找到包含特定值的单元格的行号。
电子表格包含多行数据和大量数据。列。我循环遍历.getDataRange,并且可以找到包含I&#39; m寻找的值的单元格。一旦找到,我想知道他的单元格所在的行,这样我就可以进一步获取其他单元格值,因为我确切知道有多少行和/或其他信息的列来自找到的单元格。< / p>
以下是查找包含特定字符串的单元格的一些代码。
function findCell() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var dataRange = sheet.getDataRange();
var values = dataRange.getValues();
for (var i = 0; i < values.length; i++) {
var row = "";
for (var j = 0; j < values[i].length; j++) {
if (values[i][j] == "User") {
row = values[i][j+1];
Logger.log(row);
}
}
}
}
输出Logger.log(row)
时,它会显示我正在寻找的值。我想确定每个值在哪一行,这样我就可以按X行数和X列来获取其他单元格的内容。
答案 0 :(得分:5)
我对谷歌应用程序了解不多,但在这种情况下看起来[i]
是你的行号。
所以如果你做了类似的事情:
function findCell() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var dataRange = sheet.getDataRange();
var values = dataRange.getValues();
for (var i = 0; i < values.length; i++) {
var row = "";
for (var j = 0; j < values[i].length; j++) {
if (values[i][j] == "User") {
row = values[i][j+1];
Logger.log(row);
Logger.log(i); // This is your row number
}
}
}
}
答案 1 :(得分:5)
此方法查找给定值的特定列中的行号:
function rowOf(containingValue, columnToLookInIndex, sheetIndex) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets();
var dataRange = sheet[sheetIndex].getDataRange();
var values = dataRange.getValues();
var outRow;
for (var i = 0; i < values.length; i++)
{
if (values[i][columnToLookInIndex] == containingValue)
{
outRow = i+1;
break;
}
}
return outRow;
}
但是如果你这样做,它就不会刷新,除非你改变任何参数,因为自定义函数应该是确定性的,也就是说,对于相同的参数,它应该总是给出相同的结果。
相反,最好这样做:
function rowOf(containingValue, range) {
var outRow = null;
if(range.constructor == Array)
{
for (var i = 0; i < range.length; i++)
{
if(range[i].constructor == Array && range[i].length > 0)
{
if (range[i][0] == containingValue)
{
outRow = i+1;
break;
}
}
}
}
return outRow;
}
在这种情况下,您需要传递您想要的完整列范围:
rowOf("MyTextToLookFor", 'MySheetToLookIn'!A1:A)
您可以使用您选择的列替换A,使用工作表的名称替换MySheetToLookIn,使用您要查找的文本替换MyTextToLookFor。
这将允许它在添加行和删除行时刷新。