我无法弄清楚如何将一个单元格分组以包含可扩展/可折叠的其他单元格.
我想要做的是让单元格A1包含"Stats",而单元格A2,A3,A4,A5在单元格A1中是可折叠/可扩展的.
这可以在Google表格中完成吗?
到目前为止,我唯一可以弄清楚的是"隐藏"行.与Excel相比,它有点痛苦,但是它猜它会起作用,除非有人有类似Excel的方法.
小智 0
这是基于 Google Apps 脚本的 Excel 原生“行组”功能的替代品。在“工具”>“脚本编辑器”中输入脚本后,下次打开电子表格时将看到新菜单“组”。
这些项目是
该脚本使用DocumentProperties来存储组信息(作为一对 [第一行,行数])、操作行的hideRows/方法以及向用户显示消息的方法。showRowstoast
代码:
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");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18786 次 |
| 最近记录: |