使用转置公式 google 表对多行求和
Sum across many rows with transposed formulas google sheets
我正在尝试构建一个公式来计算日期范围内发生的 classes 的总数。这是我可以使用的公式,但它需要包含数百行(即从 B2 到 B500 左右的 'Class Counts')。有什么方法可以将它变成一个数组,这样我就不必有一页又一页长的公式了吗?
=countifs(transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B2))),">="&'All Totals'!$N4,transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B2))),"<"&'All Totals'!$N5)+
countifs(transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B3))),">="&'All Totals'!$N4,transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B3))),"<"&'All Totals'!$N5)+
countifs(transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B4))),">="&'All Totals'!$N4,transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B4))),"<"&'All Totals'!$N5)
+ ... etc.
'All Data' A 列包含 class 的日期,B 列包含 class 的姓名(对每个学生重复,但只能计算一次)。
'Class Counts' B 列包含唯一 class 名称的列表。
'All Totals' 单元格 N4 和 N5 包含开始检查的月份。
目标是当且仅当它落在 'All Totals' 上的 N4 和 N5 指定的数据范围内时,才对 class 的每次出现计数一次。唯一的问题是,最终会有数百个 classes 横跨许多年。
我的想法是将它变成一个数组公式并计算整个范围,但我所有的尝试都返回了 0 个计数。
我不能分享实际的 sheet 因为里面有个人信息,但我在这里创建了一个测试版本:
https://docs.google.com/spreadsheets/d/1Nf0f5Bnuwe0-dnH6zHILGntdv2JDywFOTvmTjteXVLQ/edit?usp=sharing
我要修复的公式位于“导入”选项卡上。
编辑:
我意识到这方面的 "transpose" 方面可能没有必要,所以我将公式向下编辑了一点,但仍然无法自动对所有 'Class Counts' class 名称求和( B 列)。
=countifs(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B2)),">="&'All Totals'!$N4,unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B2)),"<"&'All Totals'!$N5)
+countifs(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B3)),">="&'All Totals'!$N4,unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B3)),"<"&'All Totals'!$N5)
+countifs(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B4)),">="&'All Totals'!$N4,unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B4)),"<"&'All Totals'!$N5)
+ ... etc
谢谢!
尝试:
=QUERY('All Data'!A2:B,
"select B,count(B)
where A >= date '"&TEXT('All Totals'!N4, "yyyy-mm-dd")&"'
and A < date '"&TEXT('All Totals'!N5, "yyyy-mm-dd")&"'
group by B
label count(B)''")
如果您只想要特定的 类 尝试:
=QUERY('All Data'!A2:B,
"select B,count(B)
where A >= date '"&TEXT('All Totals'!N4, "yyyy-mm-dd")&"'
and A < date '"&TEXT('All Totals'!N5, "yyyy-mm-dd")&"'
and B matches '"&TEXTJOIN("|", 1, 'Class Counts'!B2:B)&"'
group by B
label count(B)''")
和 return 只有它的总和:
=SUM(QUERY('All Data'!A2:B,
"select count(B)
where A >= date '"&TEXT('All Totals'!N4, "yyyy-mm-dd")&"'
and A < date '"&TEXT('All Totals'!N5, "yyyy-mm-dd")&"'
and B matches '"&TEXTJOIN("|", 1, 'Class Counts'!B2:B)&"'
group by B
label count(B)''"))
正则表达式括号修复:
=INDEX(SUM(QUERY(UNIQUE('All Data'!A2:B),
"select count(Col2)
where Col1 >= date '"&TEXT('All Totals'!N4, "yyyy-mm-dd")&"'
and Col1 < date '"&TEXT('All Totals'!N5, "yyyy-mm-dd")&"'
and Col2 matches '"&
SUBSTITUTE(SUBSTITUTE(TEXTJOIN("|", 1, 'Class Counts'!B2:B), "(", "\("), ")", "\)")&"'
group by Col2
label count(Col2)''")))
我正在尝试构建一个公式来计算日期范围内发生的 classes 的总数。这是我可以使用的公式,但它需要包含数百行(即从 B2 到 B500 左右的 'Class Counts')。有什么方法可以将它变成一个数组,这样我就不必有一页又一页长的公式了吗?
=countifs(transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B2))),">="&'All Totals'!$N4,transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B2))),"<"&'All Totals'!$N5)+
countifs(transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B3))),">="&'All Totals'!$N4,transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B3))),"<"&'All Totals'!$N5)+
countifs(transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B4))),">="&'All Totals'!$N4,transpose(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B4))),"<"&'All Totals'!$N5)
+ ... etc.
'All Data' A 列包含 class 的日期,B 列包含 class 的姓名(对每个学生重复,但只能计算一次)。 'Class Counts' B 列包含唯一 class 名称的列表。 'All Totals' 单元格 N4 和 N5 包含开始检查的月份。
目标是当且仅当它落在 'All Totals' 上的 N4 和 N5 指定的数据范围内时,才对 class 的每次出现计数一次。唯一的问题是,最终会有数百个 classes 横跨许多年。
我的想法是将它变成一个数组公式并计算整个范围,但我所有的尝试都返回了 0 个计数。
我不能分享实际的 sheet 因为里面有个人信息,但我在这里创建了一个测试版本: https://docs.google.com/spreadsheets/d/1Nf0f5Bnuwe0-dnH6zHILGntdv2JDywFOTvmTjteXVLQ/edit?usp=sharing
我要修复的公式位于“导入”选项卡上。
编辑: 我意识到这方面的 "transpose" 方面可能没有必要,所以我将公式向下编辑了一点,但仍然无法自动对所有 'Class Counts' class 名称求和( B 列)。
=countifs(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B2)),">="&'All Totals'!$N4,unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B2)),"<"&'All Totals'!$N5)
+countifs(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B3)),">="&'All Totals'!$N4,unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B3)),"<"&'All Totals'!$N5)
+countifs(unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B4)),">="&'All Totals'!$N4,unique(filter('All Data'!$A:$A,'All Data'!$B:$B='Class Counts'!$B4)),"<"&'All Totals'!$N5)
+ ... etc
谢谢!
尝试:
=QUERY('All Data'!A2:B,
"select B,count(B)
where A >= date '"&TEXT('All Totals'!N4, "yyyy-mm-dd")&"'
and A < date '"&TEXT('All Totals'!N5, "yyyy-mm-dd")&"'
group by B
label count(B)''")
如果您只想要特定的 类 尝试:
=QUERY('All Data'!A2:B,
"select B,count(B)
where A >= date '"&TEXT('All Totals'!N4, "yyyy-mm-dd")&"'
and A < date '"&TEXT('All Totals'!N5, "yyyy-mm-dd")&"'
and B matches '"&TEXTJOIN("|", 1, 'Class Counts'!B2:B)&"'
group by B
label count(B)''")
和 return 只有它的总和:
=SUM(QUERY('All Data'!A2:B,
"select count(B)
where A >= date '"&TEXT('All Totals'!N4, "yyyy-mm-dd")&"'
and A < date '"&TEXT('All Totals'!N5, "yyyy-mm-dd")&"'
and B matches '"&TEXTJOIN("|", 1, 'Class Counts'!B2:B)&"'
group by B
label count(B)''"))
正则表达式括号修复:
=INDEX(SUM(QUERY(UNIQUE('All Data'!A2:B),
"select count(Col2)
where Col1 >= date '"&TEXT('All Totals'!N4, "yyyy-mm-dd")&"'
and Col1 < date '"&TEXT('All Totals'!N5, "yyyy-mm-dd")&"'
and Col2 matches '"&
SUBSTITUTE(SUBSTITUTE(TEXTJOIN("|", 1, 'Class Counts'!B2:B), "(", "\("), ")", "\)")&"'
group by Col2
label count(Col2)''")))