嵌套在COUNTIF中的QUERY的替代方法,以用于Google表格中的列数组

时间:2019-03-15 06:04:25

标签: arrays google-sheets countif google-sheets-formula google-sheets-query

当前我有一个运行良好的公式,但是,由于我使用了多个COUNTIF查询中的一个,这使我的工作表非常慢。

 =IF($O$1="YT",COUNTIFS(
 QUERY(Contacts!$Q$3:$EZ, "select V,AC,AJ,AQ,AX,BE,BL,BS, BZ ,CG,CN,CU,DB,DI,DP,DW,ED,EK,ER,EY", 0), $T22,       
 QUERY(Contacts!$Q$3:$EZ, "select U,AB,AI,AP,AW,BD,BK,BR,`BY`,CF,CM,CT,DA,DH,DO,DV,EC,EJ,EQ,EX", 0), U$21),    
 COUNTIFS(
 QUERY(Contacts!$Q$3:$EZ, "select T,AA,AH,AO,AV,BC,BJ,BQ, BX ,CE,CL,CS,CZ,DG,DN,DU,EB,EI,EP,EW", 0), $O$1,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
 QUERY(Contacts!$Q$3:$EZ, "select V,AC,AJ,AQ,AX,BE,BL,BS, BZ ,CG,CN,CU,DB,DI,DP,DW,ED,EK,ER,EY", 0), $T22,      
 QUERY(Contacts!$Q$3:$EZ, "select U,AB,AI,AP,AW,BD,BK,BR,`BY`,CF,CM,CT,DA,DH,DO,DV,EC,EJ,EQ,EX", 0), U$21))

基本上,这是从信息中心的下拉列表中搜索月份,然后通过过滤呼叫类别,销售人员和月份来计算呼叫次数。我有2个COUNTIF的原因是,第一个基于全年,因此YT = "Year Total"

调用来自列数组,因此查询不同的列。 任何反馈将不胜感激。

与应用脚本相比,我对功能更加精通,但始终乐于学习,因此,如果有应用脚本解决方案,我将不胜感激。

我希望向您学习。

2 个答案:

答案 0 :(得分:0)

您可以分享您的数据,还是至少发布一个屏幕快照,以显示它们的外观?这总是有助于了解您想做什么。

无论如何,我要做的第一件事就是将您的QUERY()呼叫替换为直接{}寻址,仅此一项就可以加快工作速度。看看是否有帮助:

 =IF($O$1="YT",
    COUNTIFS(
      {V,AC,AJ,AQ,AX,BE,BL,BS,BZ,CG,CN,CU,DB,DI,DP,DW,ED,EK,ER,EY}, $T22,
      {U,AB,AI,AP,AW,BD,BK,BR,BY,CF,CM,CT,DA,DH,DO,DV,EC,EJ,EQ,EX}, U$21),    
    COUNTIFS(
      {T,AA,AH,AO,AV,BC,BJ,BQ,BX,CE,CL,CS,CZ,DG,DN,DU,EB,EI,EP,EW}, $O$1,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
      {V,AC,AJ,AQ,AX,BE,BL,BS,BZ,CG,CN,CU,DB,DI,DP,DW,ED,EK,ER,EY}, $T22,      
      {U,AB,AI,AP,AW,BD,BK,BR,BY,CF,CM,CT,DA,DH,DO,DV,EC,EJ,EQ,EX}, U$21))

另一个简单的加速方法可能是删除您拥有数据的最后一行下方的任何行。

答案 1 :(得分:0)

您将需要杀死所有查询公式(所有与您的问题示例相似的查询公式),并用此版本替换它们:

=IF($G$2="Year Total",
 COUNTA(FILTER(Contacts!V3:V,  Contacts!V3:V=$B12,  Contacts!U3:U=E$11))+
 COUNTA(FILTER(Contacts!AC3:AC,Contacts!AC3:AC=$B12,Contacts!AB3:AB=E$11))+
 etc...


,COUNTA(FILTER(Contacts!T3:T,  Contacts!T3:T=$G$2,  Contacts!V3:V=$B12,  Contacts!U3:U=E$11))+
 COUNTA(FILTER(Contacts!AA3:AA,Contacts!AA3:AA=$G$2,Contacts!AC3:AC=$B12,Contacts!AB3:AB=E$11))+
 etc...

 )

0

这将为您带来〜80%的提升