【问题标题】:Countif Indirect Google SheetsCountif 间接 Google 表格
【发布时间】:2018-10-10 03:06:19
【问题描述】:

我正在尝试编写一个公式来计算数字 1 在我所有工作表的单元格 F1 中出现的次数。我的床单有不同的名称(18-0100、18-0101、18-0102...)。我尝试了以下公式:

=COUNTIF(INDIRECT("'"&"'!F1"),"=1")

它的行为不可预测。即使它应该大于 1,它也只会返回 1。当我尝试开始尝试计算 2 而不是 1 时,它返回 0 而不是正确的数字。

我做错了什么?

【问题讨论】:

    标签: google-sheets spreadsheet


    【解决方案1】:

    您的公式只计算当前工作表。

    要获取它们,您需要输入所有工作表名称:

    每张表的公式为:

    =(INDIRECT("'"& sheet_name &"'!F1")=1)*1

    【讨论】:

      【解决方案2】:

      您也可以利用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 供您试用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-10
        • 1970-01-01
        • 1970-01-01
        • 2020-01-15
        • 2020-09-19
        • 1970-01-01
        • 2021-05-28
        • 2016-08-16
        相关资源
        最近更新 更多