繁体   English   中英

如果列A为空,则隐藏Google电子表格中的行?

[英]Hide rows in google spreadsheet if Column A is empty?

如果A列为空,我正试图隐藏行。 我想将它应用于特定工作表(第1周,第2周,第3周,第4周和第5周)。 这是我到目前为止第一周的代码。

 function ConditionalHideRow() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Week1");
  var condition = sheet.getRange("A:A").getValue();
  if (condition = "EMPTY") {
    sheet.hideRows(1,125)
   }    

编辑:奖金问题,当A列填满时,有什么方法可以让它取消隐藏? 我正在使用=查询公式来填充我的电子表格,并且随着更多数据的添加,长度将需要更改。

你不需要这个公式,你可以使用过滤器......

  1. 突出显示相关列
  2. 选择*数据 > 过滤器
  3. 现在标题行中应该有一个下拉按钮。 单击它并选择/取消选择您的条件

更新:这也适用于你的奖金问题。 填充列后,如果未选中“(空白)”,则不再符合过滤条件。

我假设'EMPTY'实际上不是在col A中找到的字符串,你确实想检查col A是否真的为空? 如果是这样,请尝试:

function hideRows() {
["Week1", "Week2", "Week3", "Week4", "Week5"].forEach(function (s) {
    var sheet = SpreadsheetApp.getActive()
        .getSheetByName(s)
    sheet.getRange('A:A')
        .getValues()
        .forEach(function (r, i) {
            if (!r[0]) sheet.hideRows(i + 1)
        });
    });
}

或者,对于更“经典”的方法:

function hideRows2() {
var sheets = ["Week1", "Week2", "Week3", "Week4", "Week5"];
for (var i = 0, sLen = sheets.length; i < sLen; i++) {
    var sheet = SpreadsheetApp.getActive()
        .getSheetByName(sheets[i])
    var val = sheet.getRange('A:A')
        .getValues();
    for (var j = 0, vLen = val.length; j < vLen; j++) {
        if (!val[j][0]) sheet.hideRows(j + 1)
        }
    }
}

确保没有太多空行(在带有数据的最后一行之后),因为这可能导致脚本执行超时。

回答编辑:此时取消隐藏占用行的唯一方法是在隐藏空白行之前取消隐藏工作表的所有行。

在下面的行中添加//添加此项

function hideRows() {
["Week1", "Week2", "Week3", "Week4", "Week5"].forEach(function (s) {
    var sheet = SpreadsheetApp.getActive()
        .getSheetByName(s)
    sheet.unhide(sheet.getRange('A:A'))  // Add this
    sheet.getRange('A:A')
        .getValues()
        .forEach(function (r, i) {
            if (!r[0]) sheet.hideRows(i + 1)
        });
    });
}

或者独立取消隐藏:

function unhideRows() {
["Week1", "Week2", "Week3", "Week4", "Week5"].forEach(function (s) {
    var sheet = SpreadsheetApp.getActive()
        .getSheetByName(s)
    sheet.unhide(sheet.getRange('A:A'))
    });
}

为了将来参考,当您可以将连续行作为块而不是一次处理时,可以使用更有效的方法。 即使这有效,我相信如果他理解布局,JPV可能会有所不同。

暂无
暂无

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

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