首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据值或空白在Google电子表格中隐藏空白行

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

Stack Overflow用户
提问于 2019-10-21 05:44:13
回答 2查看 2.2K关注 0票数 0

我正在尝试获得一个脚本,允许隐藏没有数据或返回空白结果的行。

我不知道该怎么做。

以下是截图的一些解释:

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-21 12:13:14

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

为了满足您自己的需要,我开发了以下代码:

代码语言:javascript
运行
复制
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,请不要隐藏。
  • ,否则,,隐藏。
票数 0
EN

Stack Overflow用户

发布于 2020-10-31 19:17:25

我需要根据值自动隐藏/取消隐藏google工作表中的行,并通过以下代码进行求解:

跑步不需要很长时间,只需片刻就能完成。我是通过编辑触发器自动播放它,意思是当我编辑谷歌工作表时,它会自动隐藏或取消隐藏基于值的行。

我建议这样做,而不是上面提到的,因为执行起来花费了太多的时间。

代码语言:javascript
运行
复制
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);
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58480380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档