首页 > 解决方案 > Google表格:如果某个单元格为空,则隐藏行

问题描述

如果某个单元格为空,我现在正在隐藏一行。隐藏行的代码有效,但我遇到了问题。这是我正在尝试做的示例电子表格:LINK

如您所见,如果 A 列没有任何值,它将起作用。 在此处输入图像描述

但是当我在 A 列中放一些东西时,它会看起来像这样。 在此处输入图像描述

这是隐藏行的代码:

var startRow = 6;
var colToCheck = 2;

function script_HideRows() {
  var sheetNames = ["MS_Q1", "MS_Q2", "MS_Q3", "MS_Q4", "SUMMARY"];  // Please set the sheet names here. In this case, 4 sheets are used.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.getSheets().forEach(sheet => {
    var sheetName = sheet.getSheetName();
    if (sheetNames.includes(sheetName)) {
      if (sheetName == "SUMMARY") {  // When the sheet is "SUMMARY", the start row is changed.
        startRow = 7;
      }
      var numRows = sheet.getLastRow();
      var elements = sheet.getRange(startRow, colToCheck, numRows).getValues();
     
      for (var i=0; i<(numRows - startRow); i++) {
        if (shouldHideRow(sheet, i, elements[i][0])) {
          sheet.hideRows(startRow + i);
        }
      }
      // Hide the rest of the rows
      var totalNumRows = sheet.getMaxRows();
      if (totalNumRows > numRows)
        sheet.hideRows(numRows+1, totalNumRows - numRows);
    }
  });
}

我从这里得到了那个代码:LINK

我只想隐藏 B 列中包含空单元格的所有行。

我希望有一个人可以帮助我。对不起英语不好。先感谢您!

标签: google-apps-scriptgoogle-sheetsrows

解决方案


我认为在您的脚本中,numRows - startRow可能与elements. 那么在这种情况下,下面的修改呢?

从:

for (var i=0; i<(numRows - startRow); i++) {

至:

for (var i=0; i < elements.length; i++) {

推荐阅读