请参阅下面的图片
我有这个GoogleSheets电子表格,其中包含一系列标签(表格)。以下代码需要为每张表运行:
function SearchCols()
{
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"),
searchVal = sheet.getRange("L7").getValue(),
searchCol = sheet.getRange('L11:L30').getValues();
searchCol1 = sheet.getRange ('R11:R30').getValues();
searchCol2 = sheet.getRange('Q11:Q30').getValues();
searchCol3 = sheet.getRange('S11:S30').getValues();
searchCol4 = sheet.getRange('T11:T30').getValues();
for (var i = 0, len = searchCol2.length; i < len; i++)
for (var j = 0, len2 = searchCol1.length; j < len2; j++)
{
if (searchCol2[j][0] == searchVal && searchCol1[j][0] == searchCol[i]
[0])
{
sheet.getRange('N11:N10').setValue;
sheet.getRange(i + 11, 14).setValue(searchCol3[j][0])
sheet.getRange(i + 11, 15).setValue(searchCol4[j][0])
}
}
}
只需要一些代码循环遍历列以查看是否有任何值与另一列匹配,如果是,则将一些数据粘贴到相邻的单元格中。
代码有效,但是......
请参阅第3行代码?它在哪里说:“。getSheetByName(”Sheet1“)”???
如何更改“Sheet1”部分,以便它动态地知道我正在使用哪张表来运行特定表格的代码?
我的文件每张都有一个“运行”按钮,但我只想让这个代码运行我按下按钮的表格。(查看附带的截图!)
现在的方式,如果我在Sheet50中并按下按钮运行此代码,它将在Sheet1中生成结果,但我需要它在Sheet50中生成结果!这同样适用于我的文件的每一页。当我按下“运行”按钮时,我只需要为该特定工作表运行代码。
亲爱的朋友们,请帮忙!
答案 0 :(得分:0)
循环浏览所有表格:
使用.getSheets()
获取电子表格中的所有工作表,然后使用for
循环迭代电子表格中的所有工作表。
这是您修改的代码,可以按照您的要求运行:
function SearchCols() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for (var i = 0; i < sheets.length; i++) {
var sheet = ss.getSheetByName(sheets[i].getName());
var searchVal = sheet.getRange("L7").getValue();
var searchCol = sheet.getRange('L11:L30').getValues();
var searchCol1 = sheet.getRange('R11:R30').getValues();
var searchCol2 = sheet.getRange('Q11:Q30').getValues();
var searchCol3 = sheet.getRange('S11:S30').getValues();
var searchCol4 = sheet.getRange('T11:T30').getValues();
for (var x = 0, len = searchCol2.length; x < len; x++) {
for (var j = 0, len2 = searchCol1.length; j < len2; j++) {
if (searchCol2[j][0] == searchVal && searchCol1[j][0] == searchCol[x][0]) {
sheet.getRange('N11:N10').setValue;
sheet.getRange(x + 11, 14).setValue(searchCol3[j][0])
sheet.getRange(x + 11, 15).setValue(searchCol4[j][0])
}
}
}
}
}