繁体   English   中英

根据值或空白隐藏 Google 电子表格中的空白行

[英]Hide blank rows in Google Spreadsheet based on value OR blank

我正在尝试获取一个能够隐藏没有数据的行或返回空白结果的脚本。

我不知道该怎么做。

这里有一些截图解释:

  • 该脚本应从第 27 行开始
  • 在那个例子中,我想先隐藏:第 36-37-38 行
  • 其次,我想根据没有数据的 L 列隐藏第 49 - 57 行(其中有公式: =IF(O49="","",A1)
  • 第三行 60/68/70 应该被隐藏
  • 如果可能的话,即使不包含任何公式/数据,也不应该删除第 40 行

在此处输入图像描述

为了使用 Google Apps 脚本以编程方式隐藏行,您可以使用任何hideRow(row)hideRows(rowIndex)hideRows(rowIndex, numRows)函数(参见此处)。

为了完成您自己的需求,我开发了以下代码:

var startRow = 27;
var colToCheck = 12; // Column L

function shouldHideRow(ss, rowIndex, rowValue) {
  if (rowValue != '') return false;
  if (ss.getRange(startRow + rowIndex, colToCheck, 1, 1).isPartOfMerge()) return false;
  if (ss.getRange(startRow + rowIndex + 1, colToCheck, 1, 1).isPartOfMerge()) return false;
  return true;
}

function myFunction() {
  var ss = SpreadsheetApp.getActive().getSheets()[0];
  var numRows = ss.getLastRow();
  var elements = ss.getRange(startRow, colToCheck, numRows).getValues();
  for (var i=0; i<(numRows - startRow); i++) {
    if (shouldHideRow(ss, i, elements[i][0])) {
      ss.hideRows(startRow + i);
    }
  }
  // Hide the rest of the rows
  var totalNumRows = ss.getMaxRows();
  if (totalNumRows > numRows)
    ss.hideRows(numRows+1, totalNumRows - numRows);
}

在决定是否隐藏行时检查的条件如下:

  • 如果该行的单元格 L 不为空,则不要隐藏。
  • 如果行的单元格 L 被合并,不要隐藏。
  • 如果下一行的单元格 L 被合并,不要隐藏。
  • 否则,隐藏。

我需要根据值自动隐藏/取消隐藏谷歌表格中的行,并通过以下代码解决:

跑的时间不长,一会就跑完。 我通过编辑触发器自动播放它,这意味着当我编辑谷歌工作表时,它会根据值自动隐藏或取消隐藏行。

我建议这个而不是上面花费太多时间来执行的。

var startRow = 7;
var colToCheck = 1; // Column A


function hideShow() {
  var sh=SpreadsheetApp.getActive().getSheetByName('Print Staff Statement');
  var rg=sh.getRange(startRow,colToCheck,sh.getLastRow(),1);
  var vA=rg.getValues();
  for(var i=0;i<vA.length;i++) {
    if(vA[i][0]<1) {
      sh.hideRows(i+startRow);
    }
    if(vA[i][0]>1) {
      sh.showRows(i+startRow);
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM