2014-01-09 169 views
3

我无法弄清楚如何将一个单元格分组以包含可展开/可折叠的其他单元格。将Google电子表格单元格折叠为单个单元格

我想要做的是让单元格A1包含“统计信息”,而单元格A2,A3,A4,A5可以在单元格A1中折叠/展开。

这是可能在Google表格中执行的吗?

到目前为止,我唯一能想出来的就是“隐藏”行。与Excel相比,臀部有点痛,但它猜测它会起作用,除非有人拥有像Excel一样的方法。

+2

非常多的痛苦。隐藏似乎是谷歌对此的答案,但是当你“取消隐藏”时隐藏是无效的。您必须重新选择行,然后重新隐藏它们。如果您有多个级别的“隐藏”,他们都将同时被隐藏。 – mobill

回答

0

这是一个基于Google Apps脚本的替代Excel的原生“行组”功能。在工具>脚本编辑器中输入脚本后,您将在打开电子表格后的下一次获得新的菜单“组”。

的项目是

  • 隐藏组:行的所有指定群体都隐藏
  • 显示组:行的所有指定群体都没有隐藏的(隐藏的行的每个单独组可以通过点击它来取消隐藏纸张的左边缘)。
  • 组行:创建一组由当前选择决定的行。在工作表中选择一些范围后,使用此选项(列无关紧要,只记录范围的行跨度)。
  • 取消组合行:删除一个组(如果以前创建了一个具有精确的行跨度的组)。
  • 清除所有组:删除所有组。

该脚本使用DocumentProperties来存储组信息(作为一对[第一行,行数]),则hideRows/showRows方法来操作的行,和toast方法,以显示信息给用户。

代码:

function onOpen() { 
    var menu = [{name: "Hide Groups", functionName: "hideGroups"}, 
       {name: "Show Groups", functionName: "showGroups"}, 
       {name: "Group Rows", functionName: "groupRows"}, 
       {name: "Ungroup Rows", functionName: "ungroupRows"}, 
       {name: "Clear All Groups", functionName: "clearAllGroups"}]; 
    SpreadsheetApp.getActiveSpreadsheet().addMenu("Groups", menu); 
} 

function groupRows() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var dp = PropertiesService.getDocumentProperties(); 
    var groups = JSON.parse(dp.getProperty("groups") || "[]"); 
    Logger.log(groups); 
    var range = SpreadsheetApp.getActiveRange(); 
    var group = [range.getRow(), range.getHeight()]; 
    if (groups.some(function (g) { 
    return (g[0] == group[0]) && (g[1] == group[1]); 
    })) { 
    ss.toast("Group already exists"); 
    } 
    else { 
    groups.push(group); 
    dp.setProperty("groups", JSON.stringify(groups)); 
    ss.toast("Group added"); 
    } 
} 

function ungroupRows() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var dp = PropertiesService.getDocumentProperties(); 
    var groups = JSON.parse(dp.getProperty("groups") || "[]"); 
    var range = SpreadsheetApp.getActiveRange(); 
    var group = [range.getRow(), range.getHeight()]; 
    var newGroups = groups.filter(function (g) { 
    return (g[0] != group[0]) || (g[1] != group[1]); 
    }); 
    if (newGroups.length == groups.length) { 
    ss.toast("No such group"); 
    } 
    else { 
    dp.setProperty("groups", JSON.stringify(newGroups)); 
    ss.toast("Group removed"); 
    } 
} 

function hideGroups() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var dp = PropertiesService.getDocumentProperties(); 
    var groups = JSON.parse(dp.getProperty("groups") || "[]"); 
    for (var i in groups) { 
    sheet.hideRows(groups[i][0], groups[i][1]); 
    } 
} 

function showGroups() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var dp = PropertiesService.getDocumentProperties(); 
    var groups = JSON.parse(dp.getProperty("groups") || "[]"); 
    for (var i in groups) { 
    sheet.showRows(groups[i][0], groups[i][1]); 
    } 
} 

function clearAllGroups() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var dp = PropertiesService.getDocumentProperties(); 
    dp.deleteProperty("groups"); 
    ss.toast("All groups removed"); 
} 
相关问题