google-sheets - 根据列名求和?
问题描述
我有一个 Google 表格,其中的数字是手动输入的,以便记录各种站点的活动。该工作表包含一个日期列,每个日期作为一个行值。然后它有三列(总测试、总阳性、总空隙),每个站点都重复这些列。有 10 个站点(将会增长),因此总共有 10 个测试、10 个总阳性、10 个总无效列。
我想做的是根据列名求和,以便每天自动添加所有站点的总测试、总阳性和总无效。
我尝试在数据透视表上使用 SUM 计算字段,但是当我这样做时,使用“Total tests”,它只选择了具有该名称的第一列,并没有对具有该名称的所有列求和。
有没有办法使用数据透视表(或替代方法)来汇总具有相同名称的那些列的每日总数?
解决方案
您的工作表具有预测布局(例如,每个站点始终有 3 列),因此您可以起诉MOD
3 以始终获取每 3 列并将它们相加:
AH3:
=INDEX(MMULT(1*FILTER(C3:AF, MOD(COLUMN(C:AF), 3)=0), SEQUENCE(COLUMNS(
FILTER(C3:AF, MOD(COLUMN(C:AF), 3)=0)), 1, 1, 0)))
人工智能3:
=INDEX(MMULT(1*FILTER(C3:AF, MOD(COLUMN(C:AF)-1, 3)=0), SEQUENCE(COLUMNS(
FILTER(C3:AF, MOD(COLUMN(C:AF)-1, 3)=0)), 1, 1, 0)))
AJ3:
=INDEX(MMULT(1*FILTER(C3:AF, MOD(COLUMN(C:AF)-2, 3)=0), SEQUENCE(COLUMNS(
FILTER(C3:AF, MOD(COLUMN(C:AF)-2, 3)=0)), 1, 1, 0)))
要删除零,您可以在 AH3 中执行此操作:
=INDEX(IFERROR(1/(1/MMULT(1*FILTER(C3:AF, MOD(COLUMN(C:AF), 3)=0), SEQUENCE(COLUMNS(
FILTER(C3:AF, MOD(COLUMN(C:AF), 3)=0)), 1, 1, 0)))))
更新:
=ARRAYFORMULA(QUERY(QUERY({IF(A3:A<>"",ISOWEEKNUM(A3:A),),
MMULT(1*FILTER(C3:AF, MOD(COLUMN(C:AF), 3)=0), SEQUENCE(COLUMNS(
FILTER(C3:AF, MOD(COLUMN(C:AF), 3)=0)), 1, 1, 0)),
MMULT(1*FILTER(C3:AF, MOD(COLUMN(C:AF)-1, 3)=0), SEQUENCE(COLUMNS(
FILTER(C3:AF, MOD(COLUMN(C:AF)-1, 3)=0)), 1, 1, 0)),
MMULT(1*FILTER(C3:AF, MOD(COLUMN(C:AF)-2, 3)=0), SEQUENCE(COLUMNS(
FILTER(C3:AF, MOD(COLUMN(C:AF)-2, 3)=0)), 1, 1, 0))},
"select Col1,sum(Col2),sum(Col3),sum(Col4) where Col2 > 0 group by Col1"),
"offset 1", 0))
推荐阅读
- javascript - 如何正确返回 AJAX 数据
- ruby-on-rails - 创建一个可以从另一个类初始化新对象的方法
- python - 进行多处理的最佳方法?
- casting - F# 转换为前缀运算符
- xml - 从 XML 中提取特定数据并使用 Python 将该数据写入 CSV
- flutter - 如何将 Flutter 移动应用迁移到 Flutter Web
- emacs - 在 org-mode 中将初始可见性设置为某个级别
- javafx - 如果 X/Y 设置为除 0 以外的任何值,为什么我的图像会离开屏幕?
- javascript - 如何检查我的 event.target 是否是 React 中的 typeof HTML 输入元素?
- python - KeyError: 'sites' when using JSON in Python