首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在列标题中搜索crieteria,如果crieteria满足相应列中非空单元格的计数数

在列标题中搜索crieteria,如果crieteria满足相应列中非空单元格的计数数
EN

Stack Overflow用户
提问于 2019-01-06 22:05:58
回答 1查看 24关注 0票数 0

我有一个谷歌电子表格包含班次注册数据,并想计算有多少注册完成(通过谷歌表格)的日期。但是,使用google表单在每次输入数据时重新填充,日期可以出现在多个列中

我的Sheet1看起来像这样:

代码语言:javascript
运行
复制
Name |02.1 |03.1 |04.1 |02.1
-----------------------------
Paul |5-9  |6-10 |     |
Frank|     |5-9  |     |6-10
Tom  |     |     |6-10 |5-9

我想找到一个公式,放在Sheet2中,它可以搜索包含某个列标题(02.1)的所有列,并计算在同一列中有多少非空单元格。

因此,如果查找包含文本02.1的列,则结果应为3。

这是我希望在Sheet2中实现的结果:

代码语言:javascript
运行
复制
      |Count |
-----------------------------
02.1 |3      |
03.1 |2      |
04.1 |1      |

由于每次有人注册时文件都会扩大,我有大约100行,我想全年重复使用这些行,因此寻找最动态的解决方案,其中不需要做太多的手动输入。

EN

回答 1

Stack Overflow用户

发布于 2019-01-07 04:10:03

(在我看来)最直接的方法是自定义函数。您可以使用“”参数来精确计数具有相同header的列的非空值,如下所示:

代码语言:javascript
运行
复制
function COUNT_BY_HEADER(header) {
  // Here is a sheet with data to count (non-empty cells)
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  var values = sheet.getDataRange().getValues();
  var headers = values.shift(), 
      count = 0;
  for (var i in headers) {
    if (headers[i] == header) {
      for (var j in values) {
        if (values[j][i]) count++;
      }
    }
  }
  return count;
}

例如,可以为Sheet2的第三行编写公式:=COUNT_BY_HEADER(A3)

顺便说一句,共享的Sheet2包含更复杂的数据(不完全等同于Sheet1的头)。还要注意工作表的名称('Sheet1‘或’Sheet1.‘)...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54062287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档