1

我创建了一个谷歌表格。单个 Google 工作表中有多个工作表(标签)。

我有一张叫做Dashboard

还有其他床单,如kkweb, virtual。目前除了仪表板还有 2 个其他工作表。所有 2 张表具有相同的列和结构,即使是新表也将具有相同的列和结构。

我想在工作dashboard表上执行一些计算。

  1. 计算总任务

=COUNT(kkweb!B5:B,virtual!B5:B)

  1. 统计“新请求”总数

=(COUNTIF(kkweb!D5:D,"New Requests")) + (COUNTIF(virtual!D5:D,"New Requests"))

注意:我上面的公式运行良好,但我将有 20 多张而不是 2 张。所以我的计数公式就像

=COUNT(kkweb!B5:B,virtual!B5:B,Sheet3!B5:B,Sheet4!B5:B,Sheet5!B5:B,Sheet6!B5:B,Sheet7!B5:B)ETC

每次有新表格出现时,我的所有公式都会很长。

有没有简单的方法在谷歌表格中进行计算?

我们也许可以使用名称配置创建额外的工作表并在那里添加工作表名称并执行一个简单的公式来进行上述计算

注意:每个工作表都有不同的名称,而不是 sheet1、sheet2、sheet3。

其次,我如何根据所有工作表中的其他列计算值。

例如:=(COUNTIF(kkweb!D5:D,"New Requests"))此公式计算New Requestskkweb 表中 D5:D 的值。我还有另一列 C5:C,其中包含名称“John”、“Katrina”等

所以基本上我想检查New Requests“约翰”的数量

4

1 回答 1

1

有几种方法可以解决这个问题。这取决于你想走多远,例如。你喜欢哪条路线。在内部没有检测工作表名称的公式,因此您需要一个脚本。有几个例如:

function SNAME(option) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet()
  var thisSheet = sheet.getName(); 
  if(option === 0){                  // ACTIVE SHEET NAME =SNAME(0)
    return thisSheet;
  }else if(option === 1){            // ALL SHEET NAMES =SNAME(1)
    var sheetList = [];
    ss.getSheets().forEach(function(val){
       sheetList.push(val.getName())
    });
    return sheetList;
  }else if(option === 2){            // SPREADSHEET NAME =SNAME(2)
    return ss.getName();    
  }else{
    return "#N/A";                   // ERROR MESSAGE
  };
};

然后您可以在其上构建并创建例如字符串生成器

=ARRAYFORMULA(TEXTJOIN(",", 1, SNAME(1)&"!D5:D"))

甚至可以复制粘贴的完整公式:

=ARRAYFORMULA("=COUNT('"&TEXTJOIN(",'", 1, SNAME(1)&"'!B5:B")&")")

0

当然,如果您精通 JS 并使用一些花哨的 onOpen/onEdit 或时间触发器运行它,则可以通过脚本对其进行完全管理


至于约翰/卡特里娜飓风问题,您可以使用COUNTIFS而不是COUNTIF. 在那里你可以定义多个标准来获得你想要的计数。例如:

=COUNTIFS(kkweb!D5:D, "New Requests", kkweb!E5:E, "John")
于 2019-09-13T09:39:29.563 回答