我不知道如何将一个单元格分组以包含其他可展开/可折叠的单元格。
我尝试做的是让单元格A1包含“Stat”,而单元格A2、A3、A4、A5在单元格A1中是可折叠/可展开的。
在Google Sheets中可以做到这一点吗?
到目前为止,我唯一能想到的就是“隐藏”行。与Excel相比,这是一件令人头疼的事情,但我想,除非有人有一个像Excel一样的方法,否则它是可以工作的。
发布于 2018-11-21 19:40:44
发布于 2017-12-15 00:08:06
这是基于Google Apps脚本的Excel原生“行组”功能的替代品。在工具>脚本编辑器中输入脚本后,下次打开电子表格后,您将获得新的菜单"Groups“。
这些项目包括
该脚本使用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");
}
https://stackoverflow.com/questions/21033412
复制