基于单元格的值隐藏列(Hide columns based on cell value)

2019-07-04 03:46发布

在我的谷歌电子表格中,我使用移调和ImportRange公式的组合来导入日历表格B数据,以填写工作时间表事件。 由于每个日期上有3个事件插槽,这并不总是充满,我得到了很多过时的列。

表布局:

row1:  01-01-2013  01-01-2013  01-01-2013  02-01-2013
row2:  Event_ID    Event_ID    Event_ID    Event_ID
row3:  Event_name  Event_name  Event_name  Event_name

行1和2包含自动生成的日期和事项标识的等等这些都是从来没有空。 细胞NR。 3个显示空时没有添加到该时隙事件,但实际上存在有一个CONTINUE配方以继续从电池A1的IMPORTRANGE配方。

I'm寻找一个脚本自动隐藏在电池NR的colums。 3不包含导入的数据。

不理解一个关于JavaScript的事情(而且愿意学习),我试图从碎片现有的脚本相结合,但在这一点上我不能设法让这些代码的任何意义......

Answer 1:

下面的代码做的伎俩:

function onOpen() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // create menu
  var menu = [{name: "Hide columns", functionName: "hideColumn"},
    {name: "Show all columns", functionName: "showColumn"}];

  // add to menu
  ss.addMenu("Check", menu);
}

function hideColumn() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // get first sheet
  var sheet = ss.getSheets()[0];

  // get data
  var data = sheet.getDataRange();

  // get number of columns
  var lastCol = data.getLastColumn()+1;

  Logger.log(lastCol);

  // itterate through columns
  for(var i=1; i<lastCol; i++) {
     if(data.getCell(3, i).getValue() == '') {
        sheet.hideColumns(i);
     }
  }
}

function showColumn() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // get first sheet
  var sheet = ss.getSheets()[0];

  // get data
  var data = sheet.getDataRange();

  // get number of columns
  var lastCol = data.getLastColumn();

  // show all columns
  sheet.showColumns(1, lastCol);
}
  1. 创建菜单在打开文件
  2. 第一个菜单选项,隐藏所有列与第3行是空的
  3. 第二个选项,显示所有隐藏的列

见示例文件我准备看它在行动: 基于单元格的值隐藏列



Answer 2:

除了雅各的答案,就可以过滤入公式本身写入仅与第3行的数据显示列例如,如果在A1的IMPORTRANGE公式为:

=ImportRange("key";"A1:Z3")

你也可以使用这样的:

=FILTER(ImportRange("key";"A1:Z3");LEN(ImportRange("key";"A3:Z3")))

或者这一点,它仅使用一个电话IMPORTRANGE:

=TRANSPOSE(QUERY(TRANSPOSE(ImportRange("key";"A1:Z3"));"select * where Col3 != ''"))



文章来源: Hide columns based on cell value