【发布时间】:2018-10-10 03:06:19
【问题描述】:
我正在尝试编写一个公式来计算数字 1 在我所有工作表的单元格 F1 中出现的次数。我的床单有不同的名称(18-0100、18-0101、18-0102...)。我尝试了以下公式:
=COUNTIF(INDIRECT("'"&"'!F1"),"=1")
它的行为不可预测。即使它应该大于 1,它也只会返回 1。当我尝试开始尝试计算 2 而不是 1 时,它返回 0 而不是正确的数字。
我做错了什么?
【问题讨论】:
我正在尝试编写一个公式来计算数字 1 在我所有工作表的单元格 F1 中出现的次数。我的床单有不同的名称(18-0100、18-0101、18-0102...)。我尝试了以下公式:
=COUNTIF(INDIRECT("'"&"'!F1"),"=1")
它的行为不可预测。即使它应该大于 1,它也只会返回 1。当我尝试开始尝试计算 2 而不是 1 时,它返回 0 而不是正确的数字。
我做错了什么?
【问题讨论】:
您也可以利用Google Apps Script 来实现这一目标。
从您的电子表格转到Tools > Script Editor。添加下面的代码,然后保存。保存在那里的函数将可供所有其他 Google 应用程序访问,包括您的电子表格。然后,您可以像使用任何其他公式一样在电子表格中使用函数的名称。
function OccurrencesInSheetNames(str) {
var c = 0;
var regExp = new RegExp('[' + str + ']', 'g');
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var sheetnames = [];
for (var i=0; i<sheets.length; i++) {
sheetnames.push([sheets[i].getName()]);
}
for (var i=0; i<sheetnames.length; i++) {
var name = sheetnames[i].toString();
var count = (name.match(regExp) || []).length;
c += count;
}
return c;
}
现在在您的单元格F1 中,输入以下公式:
=OccurrencesInSheetNames(TEXT(1,0))
您还可以将上述公式中的1 替换为单元格引用,如果这样更适合您的需要。 (例如=OccurrencesInSheetNames(TEXT(C5,0)),如果您想在工作表名称中搜索单元格 C5 中找到的整数。)
这里有一个demo spreadsheet 供您试用。
【讨论】: