2012-11-26 125 views
4

在我的Google电子表格A中,我使用TRANSPOSE和IMPORTRANGE公式的组合来导入日历电子表格B中的数据,以填写事件的工作时间表。因为在每个日期有3个事件插槽,并不总是被填满,我收到了很多过时的列。Google电子表格:根据单元格值隐藏列

表布局:

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继续导入区域公式。

我正在寻找一个脚本来自动隐藏在哪个单元格中的柱子。 3不包含导入的数据。

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

回答

4

下面的代码是卓有成效的:

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. 第二个选项,显示所有隐藏列

见示例文件我准备看它在行动:Hide columns based on cell value

+0

不正是我一直在寻找,非常感谢! – user1843225

+0

请将问题标记为已回答,谢谢。 –

+0

只需要注意,在2.第一个菜单选项中,隐藏了第3行为空的所有列,我认为您的意思是第3列而不是第3行。另外,当一行为空时,它将隐藏所有内容。 – Amir

1

除了雅各的答案,也可以写一个过滤器进入公式本身只显示在第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 != ''"))

相关问题