1)所有表格的范围:
我用谷歌搜索了一切,但没有。基本上,我需要一个在所有工作表中查找相同范围的公式。
我目前的公式如下:
=COUNTIF(Aug_15!$G:$G, "Shaun")+countif(July_15!$G:$G, "Shaun)+countif(June_15!$G:$G, "Shaun")+countif(May_15!$G:$G, "Shaun")+COUNTIF(Apr_15!$G:$G, "Shaun")+COUNTIF(Mar_15!$G:$G, "Shaun")
我遇到的问题是,月份过后,会创建一个月的新工作表。因此,每月必须编辑公式,这会大大降低自动化程度。我基本上正在寻找能够在所有表格中搜索G:G的东西。
所以在我想象的世界中,它看起来像这样:
=COUNTIF(ALLSHEETS!$G:$G, "Shaun")
2)细胞参考作为标准
我正在尝试让标准从另一个单元格中查找。例如,我将“Shaun”替换为单元格L3
。但它不起作用!它从字面上搜索两个字符L
和3
!
无论如何都要将标准作为另一个单元格的值吗?
非常感谢,
肖恩。
答案 0 :(得分:1)
正如Akshin Jalilov所注意到的,你需要一个脚本来实现这一目标。我碰巧在不久前为该场景编写了一个自定义函数。
/**
* Counts the cells within the range on multiple sheets.
*
* @param {"A1:B23"} range The range to monitor (A1Notation).
* @param {"valueToCount"} countItem Either a string or a cell reference
* @param {"Sheet1, Sheet2"} excluded [Optional] - String that holds the names of the sheets that are excluded (comma-separated list);
* @return {number} The number of times the item appears in the range(s).
* @customfunction
*/
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("B2:B10", "Shaun")
或'Shaun'在C2中
=COUNTALLSHEETS("B2:B3", C2)
有一个可选参数,允许您提供一个字符串,其中包含您希望从计数中排除的逗号分隔的工作表名称。如果要计算所有纸张,请不要使用此参数。
看看它是否适合你?
答案 1 :(得分:0)
1)所有表格的范围:
您可以通过脚本执行此操作的唯一方法,否则电子表格功能无法动态读取电子表格中的工作表。
2)细胞参考作为标准
如果 L3 的值为" Shaun"你可以这样做:
=COUNTIF(Aug_15!$G:$G, L3)
确保不将 L3 加入引号。