根据单元格数值隐藏列

7
在我的谷歌电子表格A中,我使用转置和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

第一行和第二行包含自动生成的日期和事件ID,因此这些永远不会为空。当该单元格中没有添加事件时,第3个单元格显示为空,但实际上有一个CONTINUE公式在其中,以继续从单元格A1导入范围公式。
我正在寻找一个脚本,可以自动隐藏第3个单元格中不包含导入数据的列。
由于不了解JavaScript(但愿意学习),我尝试结合现有脚本的片段,但目前我无法理解这些代码...
2个回答

8
以下代码可以解决问题:
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. 第二个选项,显示所有隐藏的列

请参见我准备的示例文件,观看其实际应用:根据单元格值隐藏列


只是一个注释,在第二个菜单选项中,隐藏所有第三行为空的列,我想您指的是第三列而不是第三行。此外,当一行为空时,它将隐藏所有内容。 - Amir

1
除了Jacob的回答之外,还可以将过滤器写入公式本身,以仅显示第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 != ''"))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接