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

How to get last visible row, if rows are hidden or not hidden by filter in Google Sheets?

如果行被隐藏,只有 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.
  }
}

我相信你的目标如下。

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

  • 您想使用 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);
}

注:

  • 如果要通过基本过滤器从sheet中获取隐藏行的lastRow,请修改如下。

    • 来自

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

参考文献: