如果Google表格中的过滤器隐藏或不隐藏行,如何获取最后一个可见行?

问题描述 投票:2回答:1

如果隐藏行,则只有lastRow1显示错误的值。如何忽略隐藏的行?

function x() {
  var s = SpreadsheetApp.getActive().getActiveSheet();
  var lastRow1 = s.getLastRow();
  var lastRow2 = s.getActiveRange().getLastRow();
  Browser.msgBox(lastRow1);
  Browser.msgBox(lastRow2);
  if (lastRow1 == lastRow2) {
    // Do something.
  }
}
javascript google-apps-script google-sheets row selection
1个回答
3
投票

我相信您的目标如下。

  • 当以下示例情况时,您希望将5检索为lastRow

    enter image description here

  • 您想使用Google Apps脚本来实现。

为此,这个答案如何?

修改点:

  • 在这种情况下,用lastRow检索isRowHiddenByUser

修改的脚本:

function x() {
  var s = SpreadsheetApp.getActive().getActiveSheet();
  var lastRow = 0;
  for (var i = s.getLastRow(); i > 0; i--) {
    if (!s.isRowHiddenByUser(i)) {
      lastRow = i;
      break;
    }
  }
  console.log(lastRow); // or Browser.msgBox(lastRow);
}

注意:

  • 如果要通过基本过滤器从带有隐藏行的工作表中检索lastRow,请进行如下修改。

    • 来自

      if (!s.isRowHiddenByUser(i)) {
      
    • To

      if (!s.isRowHiddenByFilter(i)) {
      

参考:

© www.soinside.com 2019 - 2024. All rights reserved.