更新:通过转移到Excel解决。 :(
我有一个Google电子表格,每周都有一个页面。我目前正在使用以下自定义函数来计算名称在所有工作表中显示的总次数。
function COUNTALLSHEETS(range, countItem, excluded) {
try {
var count = 0,
ex = (excluded) ? Trim(excluded.split()) : false;
SpreadsheetApp.getActive()
.getSheets()
.forEach(function (s) {
if (ex && ex.indexOf(s.getName()) === -1 || !ex) {
s.getRange(range)
.getValues()
.reduce(function (a, b) {
return a.concat(b);
})
.forEach(function (v) {
if (v === countItem) count += 1;
});
};
});
return count;
} catch (e) {
throw e.message;
}
}
function Trim(v) {
return v.toString().replace(/^\s\s*/, "")
.replace(/\s\s*$/, "");
}
使用时运行该功能
=COUNTALLSHEETS("$A$1:$G$40", A2, "Rosters")
除了由函数的第三个参数排除的那些之外,它返回所有工作表的值。在这种情况下,标题为“Rosters”的工作表不计算在内。
我的问题是每周都要更新排除的表格。我目前所有的纸张日期都被排除在外。因此,它不像之前对函数的短暂调用,而是看起来更像是
=COUNTALLSHEETS("$A$1:$G$40", A2, "Rosters, 5-9Dec, 12-16Dec, ... etc.")
有没有办法修改代码本身或函数调用以自动排除未来的工作表?我想提取当前日期,将其与工作表标题进行比较(如果需要,我可以将其更改为适合某种格式),并排除将来的任何工作日。
请让我知道任何想法;如果我需要共享电子表格的副本,我可以。
答案 0 :(得分:0)
您是否需要定期访问排除的表格?怎么样隐藏他们,只计算未隐藏的床单?在解决问题的同时,可以使事情更有条理/更易于管理。由于我不完全了解你的用例,当然这可能不是正确的方向。