脚本 Google 工作表 - 如何定位单元格
Script Google Sheets - How to locate a cell
'亲爱的'社区',
我需要你的帮助。
我想将单元格定位到一个确定的范围“A1:A20”中,该范围至少包含 36 个“-”。为此,我尝试使用 "------------------------------------"&"*" 进入我的脚本在下面,但我不工作:
function testCheckv1() {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var ui = SpreadsheetApp.getUi();
var donneesrecherche = sheet.getRange("A1:A20").getValues();
for (var i = 0; i < 10; i++) {
if(donneesrecherche[i][0] == "------------------------------------"&"*"){
var search0 = sheet.getRange(i+2,1).getRow();
// here is for a test to obtain the searched value
sheet.getRange("A1").setValue(search0)
}}};
可以实现吗?
非常感谢您的帮助。
最终用在这个GSheets上例如:
MyPicture
检查第 1 行后:
标准完成
是 -> 找到该行然后执行脚本 X
否 -> 转到第 2 行
检查第 2 行后:
标准完成
是 -> 找到该行然后执行脚本 X
否 -> 转到第 3 行
...
在图像中,脚本应将行定位为“17”并执行脚本 X。
脚本 X 将简单地删除第 1 到 17 行,以便第 18 行成为 sheet 的第一行。
此致,
安东尼.
无需 google 应用脚本即可完成您纯粹想要完成的任务。如果您在 this spreadsheet, I've used a filter formula 上看到,它列出了单元格 C3 中来自 A1:A10 的所有匹配地址,以及它们在右侧列中的值。看起来您正在尝试获取地址下方显示的任何匹配单元格的行号,或者可以使用以下公式完成:
=filter(row(A1:A10),ISNUMBER(find(rept("-",36),A1:A10)))
如果您真的想要脚本答案,这应该可以帮助您入门。目前还不清楚您希望如何处理成功的匹配。如果不止一个怎么办?下面的代码将在匹配时记录下来,您可以在之后编写代码。
function testCheckv1() {
var ss = SpreadsheetApp.getActiveSheet();
const zRepeatNumber = 36;
var donneesrecherche = ss.getRange("A1:A20").getValues();
var tangoText = '';
var nukeRows = [];
for (var i = 0; i < zRepeatNumber; i++) {
tangoText = tangoText + '-';
}
for (var r = 0; r < donneesrecherche.length; r++) {
var zRow = donneesrecherche[r];
for (var c = 0; c < zRow.length; c++) {
var theValue = zRow[c] + "z";
if (theValue.search(tangoText) >= 0) {
nukeRows.push(r + 1);
}
}
}
for (var k = nukeRows.length - 1; k >= 0; k--) {
ss.deleteRow(nukeRows[k]);
}
}
'亲爱的'社区',
我需要你的帮助。
我想将单元格定位到一个确定的范围“A1:A20”中,该范围至少包含 36 个“-”。为此,我尝试使用 "------------------------------------"&"*" 进入我的脚本在下面,但我不工作:
function testCheckv1() {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var ui = SpreadsheetApp.getUi();
var donneesrecherche = sheet.getRange("A1:A20").getValues();
for (var i = 0; i < 10; i++) {
if(donneesrecherche[i][0] == "------------------------------------"&"*"){
var search0 = sheet.getRange(i+2,1).getRow();
// here is for a test to obtain the searched value
sheet.getRange("A1").setValue(search0)
}}};
可以实现吗?
非常感谢您的帮助。
最终用在这个GSheets上例如:
MyPicture
检查第 1 行后: 标准完成 是 -> 找到该行然后执行脚本 X 否 -> 转到第 2 行
检查第 2 行后: 标准完成 是 -> 找到该行然后执行脚本 X 否 -> 转到第 3 行
...
在图像中,脚本应将行定位为“17”并执行脚本 X。
脚本 X 将简单地删除第 1 到 17 行,以便第 18 行成为 sheet 的第一行。
此致, 安东尼.
无需 google 应用脚本即可完成您纯粹想要完成的任务。如果您在 this spreadsheet, I've used a filter formula 上看到,它列出了单元格 C3 中来自 A1:A10 的所有匹配地址,以及它们在右侧列中的值。看起来您正在尝试获取地址下方显示的任何匹配单元格的行号,或者可以使用以下公式完成:
=filter(row(A1:A10),ISNUMBER(find(rept("-",36),A1:A10)))
如果您真的想要脚本答案,这应该可以帮助您入门。目前还不清楚您希望如何处理成功的匹配。如果不止一个怎么办?下面的代码将在匹配时记录下来,您可以在之后编写代码。
function testCheckv1() {
var ss = SpreadsheetApp.getActiveSheet();
const zRepeatNumber = 36;
var donneesrecherche = ss.getRange("A1:A20").getValues();
var tangoText = '';
var nukeRows = [];
for (var i = 0; i < zRepeatNumber; i++) {
tangoText = tangoText + '-';
}
for (var r = 0; r < donneesrecherche.length; r++) {
var zRow = donneesrecherche[r];
for (var c = 0; c < zRow.length; c++) {
var theValue = zRow[c] + "z";
if (theValue.search(tangoText) >= 0) {
nukeRows.push(r + 1);
}
}
}
for (var k = nukeRows.length - 1; k >= 0; k--) {
ss.deleteRow(nukeRows[k]);
}
}