gpt4 book ai didi

google-apps-script - Google 脚本搜索并返回单元格位置

转载 作者:行者123 更新时间:2023-12-03 00:31:35 26 4
gpt4 key购买 nike

我在使用第一个 Google 脚本时遇到了一些问题,希望得到一些帮助。

目标:在多个工作表中搜索某个值,然后在找到匹配项时返回单元格的位置。

我尝试过使用这个脚本:

/**
* Finds a value within a given range.
* @param value The value to find.
* @param range The range to search in.
* @return A range pointing to the first cell containing the value,
* or null if not found.
*/
function find(value, range) {
var data = range.getValues();
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
if (data[i][j] == value) {
return range.getCell(i + 1, j + 1);
}
}
}
return null;
}

但是它返回错误“TypeError:无法在对象中找到函数 getValues”

我的值将被定义为文本字符串,例如“ABCD”

我的范围将是多个工作表的范围,例如sheet1!A1:C4,sheet2!A1:C4

该函数应返回查找值的工作表、列和行

目前,我正在使用 iferror 索引匹配循环公式一次搜索一列的工作表(我使用间接,因为我的范围是可变的),但希望有一个脚本来使此过程变得更容易、更快。

=IFERROR(index(INDIRECT(Sheet1!A:A),
iferror(MATCH(A2,INDIRECT(Sheet1!B:B),0),
iferror(MATCH(A2,INDIRECT(Sheet1!C:C),0),
...ETC

预先感谢您的帮助。

最佳答案

试试这个:

function find(value, range) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = range.split("!")[0];
var A1Ref = range.split("!")[1];
var activeRange = ss.getSheetByName(sheet).getRange(A1Ref);
var data = activeRange.getValues();
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
if (data[i][j] == value) {
return (ss.getSheetByName(sheet).getRange(i + 1, j + 1));
}
}
}
return null;
}

这将返回范围。您可以更改该行以获取 A1Notation:

return (ss.getSheetByName(sheet).getRange(i + 1, j + 1).getA1Notation());

关于google-apps-script - Google 脚本搜索并返回单元格位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31580389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com