Альтернатива QUERY, вложенная в COUNTIF для массива столбцов в Google Sheets - PullRequest
0 голосов
/ 15 марта 2019

В настоящее время у меня есть формула, которая работает очень хорошо, однако она делает мои листы чрезвычайно медленными, поскольку я использую более одного из этих 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"

Вызовы поступают из массива столбцов, отсюда и запрос для разных столбцов.Любая обратная связь будет высоко ценится.

Я более опытен с функциями, чем со скриптом приложения, но всегда готов учиться, поэтому, если есть решение для скрипта приложения, я был бы более чем благодарен за изучение.

Iс нетерпением жду учиться у вас.

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

вам нужно будет убить все ваши формулы запросов (все те, которые выглядят как пример в вашем вопросе) и заменить их на эту сборку:

=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% прироста

0 голосов
/ 15 марта 2019

Можете ли вы поделиться своими данными или хотя бы опубликовать скриншот, показывающий, как они выглядят? Это всегда помогает понять, что вы хотите сделать.

В любом случае, первое, что я бы сделал, это заменил бы ваши 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))

Еще одним простым возможным ускорением было бы удаление любых строк ниже последней строки, для которой у вас есть данные.

...