3
我无法弄清楚如何将一个单元格分组以包含可展开/可折叠的其他单元格。将Google电子表格单元格折叠为单个单元格
我想要做的是让单元格A1包含“统计信息”,而单元格A2,A3,A4,A5可以在单元格A1中折叠/展开。
这是可能在Google表格中执行的吗?
到目前为止,我唯一能想出来的就是“隐藏”行。与Excel相比,臀部有点痛,但它猜测它会起作用,除非有人拥有像Excel一样的方法。
我无法弄清楚如何将一个单元格分组以包含可展开/可折叠的其他单元格。将Google电子表格单元格折叠为单个单元格
我想要做的是让单元格A1包含“统计信息”,而单元格A2,A3,A4,A5可以在单元格A1中折叠/展开。
这是可能在Google表格中执行的吗?
到目前为止,我唯一能想出来的就是“隐藏”行。与Excel相比,臀部有点痛,但它猜测它会起作用,除非有人拥有像Excel一样的方法。
这是一个基于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");
}
非常多的痛苦。隐藏似乎是谷歌对此的答案,但是当你“取消隐藏”时隐藏是无效的。您必须重新选择行,然后重新隐藏它们。如果您有多个级别的“隐藏”,他们都将同时被隐藏。 – mobill