当前位置: 首页 > 知识库问答 >
问题:

查找每张表格中的行,然后在匹配时跳转到单元格

骆照
2023-03-14

我试图让脚本在第4页中搜索一个值,在其余的表中搜索电子表格的范围“A2”,然后进行匹配。它跳到那张纸上

让我的代码在所有工作表中循环

感谢我能得到的所有帮助(:

第一次使用谷歌表格...

function Lookup() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Get Sheet
var sheet = ss.getSheets()[3];
//set row & column
var GCell = sheet.getRange(2, 1);
// read values from set row & column
var CValue = GCell.getValues();
Logger.log(CValue[0][0]);

//Loop all sheets
var allsheets = ss.getSheets();
for (var s in allsheets){
var sheet=allsheets[s]

//Get last row in each sheet
 var ShtID = sheet.getSheetId();
  var lastRow = sheet.getLastRow();

//var range = sheet.getRange("B2");
//Logger.log(range.getRowIndex());



var SchCell; 
for ( j = 1 ; j >= lastRow; j++){
   if(SchCell[j][1] === CValue){
    var Crow = SchCell.getRowIndex();
     ShtID.setActiveCell(ShtID.getRange(Crow, 1));
     Logger.log("Matched Row =" +Crow);
     return;
   }  
}
Logger.log("Last Row" + lastRow);
}

}

共有1个答案

仲璞瑜
2023-03-14
  • 您需要将索引3的工作表(“Sheet5”)的“A2”与除“Sheet5”之外的每个工作表的“B”列最后一行的值进行比较
  • 当“Sheet5”的“A2”值与“B”列的最后一行相同时,您需要激活单元格

如上所述,我理解你想要什么。如果我的理解是正确的,这次修改怎么样?我认为对你的情况有几个答案。所以请把这看作其中之一。

  • var ShtID=工作表。getSheetId()没有getRange()和setActiveCell的方法,因为sheet。getSheetId()返回一个整数值
  • SchCell没有值
  • 对于(j=1;j),在<代码>处
function Lookup() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  //Get Sheet
  var sheet = ss.getSheets()[3];

  //set row & column
  var GCell = sheet.getRange(2, 1);
  // read values from set row & column
  var CValue = GCell.getValues();
  Logger.log(CValue[0][0]);

  // Modified part
  var allsheets = ss.getSheets();
  for (var s = 0; s < allsheets.length; s++) {
    var sheet = allsheets[s];
    if (s != 3) {
      var values = sheet.getRange("B1:B").getValues().filter(String); // Retrieve values of column B
      if (values.length > 0) {
        var v = values[values.length - 1][0]; // Value of last row of column B
        var lastRow = "B" + values.length; // Last row of column B
        if (v == CValue[0][0]) {
          sheet.getRange(lastRow).activate();
          return true;
        }
      }
    }
  };
}
  • 在这个修改后的脚本中,当找到与“Sheet5”的“A2”相同的值时,第一张图纸的单元格被激活并聚焦。
    • 在当前阶段,无法同时激活和聚焦每张纸的多个单元格
    • getSheetId()
    • 当找到与“Sheet5”的“A2”匹配的单元格时,您希望激活第一页中“B”列的所有单元格

    如果我的理解是正确的,这个怎么样?请将修改后的部分修改为以下脚本

    // Modified part
    var allsheets = ss.getSheets();
    for (var s = 0; s < allsheets.length; s++) {
      var sheet = allsheets[s];
      if (s != 3) {
        var values = sheet.getRange("B1:B").getValues().filter(String);
        if (values.length > 0) {
          var ranges = values.reduce(function(ar, e, i) {
            if (e[0] == CValue[0][0]) {
              ar.push("B" + (i + 1));
            }
            return ar;
          }, []);
          if (ranges.length > 0) {
            Logger.log(ranges)
            sheet.setActiveRangeList(sheet.getRangeList(ranges));
            break;
          }
        }
      }
    };
    

 类似资料:
  • 在谷歌电子表格(不是excel!)中, 我有两张表。一张标题为“公司”,一张标题为“联系人”。“公司”表只是一栏中公司名称的列表,没有别的。“联系人”表是联系人详细信息的电子表格,但他们工作的公司也在A列。 我想弄清楚如何编写一个脚本来查看活动单元格的值(在“公司”表中),然后在“联系人”表的公司列中搜索该值,然后转到第二张表中的单元格让它成为活跃的细胞。 我已经弄明白了其中的一些;在搜索“联系人

  • 我已经制作了一个带有几何图形和for循环的表格,用于打印出直角图形的名称,但我想为这个图形打印一个符合条件的随机名称,如果可能的话,还可以创建另一个表格,其中只包含符合条件的图形。我试图使用,但我不知道怎么做。我将感谢你的帮助:

  • 问题内容: 我有一个很长的浮点数列表,范围从1到5,称为“平均值”,我想返回小于a或大于b的元素的索引列表 但是令人惊讶的是,“ matches”的输出中有很多重复,例如。 为什么会这样呢? 问题答案: 您正在使用它将仅在列表中找到您的值的 第一个 匹配项。因此,如果在索引2和索引9处的值为1.0,则无论列表中发生了多少次,都将 始终 返回。 使用到索引添加到您的循环,而不是: 您可以将其折叠为列

  • 当按下按钮时,我想遍历工作表中的所有单元格,找到包含。doc或。xls或。pdf的单元格,并隐藏整行。我知道我不能使用,但肯定有类似的内容。 单元格示例 这是我现在所拥有的,我可以用什么来替换包含?

  • 我有一个谷歌表单电子表格。第2行包含日期,例如2020年8月25日、2020年8日26日,跨越多个列。有没有一个脚本我可以运行,使它跳转到包含文档第一次打开时的当前日期的单元格? 我知道您定义了OnOpen()方法,它在打开文档时运行,但是,获取实际工作的代码很困难。 注意:我查看了Google电子表格/文档,在打开时跳转到当前日期单元格,但解决方案不起作用(我假设是因为我的日期都在一行中)。 我

  • 我有一个servlet,它接收一组数据,进行处理,并根据表单提交将其写入excel文件或文本页面。在处理Excel时,所有的处理都在使用Apache POI的相应模型中进行。我正在尝试修改它,以便它根据所包含的数据对行进行颜色编码,但是,在将颜色应用于行之后,当我将工作簿写入文件输出流时,颜色不存在。我正在将数据处理成excel文件,如下所示: MCVE公司 我仍然得到excel文件,但格式不存在