Несколько СЧЁТЕСЛИМН внутри формулы IFS (ОШИБКА РАЗБОРКИ ФОРМУЛЫ)

avatar
William Toscano
9 августа 2021 в 00:47
134
1
0

Получение "Ошибка синтаксического анализа формулы" после ввода этого. Не уверен, что мне не хватает запятой или скобки. Думаю, я следую правилам для IFS(), AND() и COUNTIFS(). Также не уверен, есть ли более простой способ написания этой формулы или лучше использовать скрипт Google Apps.

Я заметил, что эта формула работает только в том случае, если у меня есть 1 пара аргументов для IFS() (так что это будет первая AND() и первая COUNTIFS(), но когда я пытаюсь добавить еще одну пару аргументов, тогда Я получаю ошибку разбора формулы.

У меня не было проблем с размещением COUNTIFS() внутри IF(), но из-за ограничений IF() мне пришлось попробовать IFS(), чтобы я мог работать с более конкретными комбинациями условий.

IFS
(
AND($S$1 = "Include Both", $V$1 = "Any", $S$2 = "All"), 

    COUNTIFS
    ( 
        INDIRECT("'Activity Log'!$A$3:$A"), $N6, 
        INDIRECT("'Activity Log'!$E$3:$E"), "="&U$3,
        INDIRECT("'Activity Log'!$I$3:$I"), ">="&$N$1,
        INDIRECT("'Activity Log'!$I$3:$I"), "<="&$N$2
    ),

AND($S$1 = "Include Both", $V$1 != "Any", $S$2 = "All"),

    COUNTIFS
    (
        INDIRECT("'Activity Log'!$O$3:$O"), "="&$V$1, 
        INDIRECT("'Activity Log'!$A$3:$A"), $N6, 
        INDIRECT("'Activity Log'!$E$3:$E"), "="&U$3,
        INDIRECT("'Activity Log'!$I$3:$I"), ">="&$N$1 ,
        INDIRECT("'Activity Log'!$I$3:$I"), "<="&$N$2
    ),

AND($S$1 = "Include Both", $V$1 = "Any", $S$2 != "All"),

    COUNTIFS
    (
        INDIRECT("'Activity Log'!$A$3:$A"), $N6, 
        INDIRECT("'Activity Log'!$E$3:$E"), "="&U$3,
        INDIRECT("'Activity Log'!$I$3:$I"), ">="&$N$1 ,
        INDIRECT("'Activity Log'!$I$3:$I"), "<="&$N$2,  
        INDIRECT("'Activity Log'!$H$3:$H"), "="&$S$2
    ),

AND($S$1 = "Include Both", $V$1 != "Any", $S$2 != "All"),

    COUNTIFS
    (
    
        INDIRECT("'Activity Log'!$O$3:$O"), "="&$V$1, 
        INDIRECT("'Activity Log'!$A$3:$A"), $N6, 
        INDIRECT("'Activity Log'!$E$3:$E"), "="&U$3,
        INDIRECT("'Activity Log'!$I$3:$I"), ">="&$N$1,
        INDIRECT("'Activity Log'!$I$3:$I"), "<="&$N$2,  
        INDIRECT("'Activity Log'!$H$3:$H"), "="&$S$2
        
    ),

AND($S$1 != "Include Both", $V$1 = "Any", $S$2 = "All"),

    COUNTIFS
    (
    
        INDIRECT("'Activity Log'!$A$3:$A"), $N6, 
        INDIRECT("'Activity Log'!$E$3:$E"), "="&U$3,
        INDIRECT("'Activity Log'!$I$3:$I"), ">="&$N$1,
        INDIRECT("'Activity Log'!$I$3:$I"), "<="&$N$2, 
        INDIRECT("'Activity Log'!$M$3:$M"), "="&$S$1 
    ),

AND($S$1 != "Include Both", $V$1 != "Any", $S$2 = "All"),

    COUNTIFS
    (
    
        INDIRECT("'Activity Log'!$O$3:$O"), "="&$V$1, 
        INDIRECT("'Activity Log'!$A$3:$A"), $N6, 
        INDIRECT("'Activity Log'!$E$3:$E"), "="&U$3,
        INDIRECT("'Activity Log'!$I$3:$I"), ">="&$N$1,
        INDIRECT("'Activity Log'!$I$3:$I"), "<="&$N$2, 
        INDIRECT("'Activity Log'!$M$3:$M"), "="&$S$1 
        
        
    ),

AND($S$1 != "Include Both", $V$1 != "Any", $S$2 != "All"),

    COUNTIFS
    (
        INDIRECT("'Activity Log'!$O$3:$O"), "="&$V$1, 
        INDIRECT("'Activity Log'!$A$3:$A"), $N6, 
        INDIRECT("'Activity Log'!$E$3:$E"), "="&U$3,
        INDIRECT("'Activity Log'!$I$3:$I"), ">="&$N$1,
        INDIRECT("'Activity Log'!$I$3:$I"), "<="&$N$2, 
        INDIRECT("'Activity Log'!$M$3:$M"), "="&$S$1, 
        INDIRECT("'Activity Log'!$H$3:$H"), "="&$S$2
    ),

AND($S$1 != "Include Both", $V$1 = "Any", $S$2 != "All"),

    COUNTIFS
    (
        INDIRECT("'Activity Log'!$A$3:$A"), $N6, 
        INDIRECT("'Activity Log'!$E$3:$E"), "="&U$3,
        INDIRECT("'Activity Log'!$I$3:$I"), ">="&$N$1,
        INDIRECT("'Activity Log'!$I$3:$I"), "<="&$N$2, 
        INDIRECT("'Activity Log'!$M$3:$M"), "="&$S$1, 
        INDIRECT("'Activity Log'!$H$3:$H"), "="&$S$2
    )
)
Источник
idfurw
9 августа 2021 в 01:15
1

Какова цель INDIRECT в вашей формуле?

William Toscano
9 августа 2021 в 01:33
0

@idfurw На другом листе, который я подсчитываю, есть строки, которые автоматически вставляются в верхнюю строку. Поэтому мне нужно заморозить диапазон для подсчета

Ответы (1)

avatar
idfurw
9 августа 2021 в 01:17
2

!= не поддерживается оператор сравнения, вы должны использовать <>


Если A и/или E число. Пожалуйста, удалите одинарные кавычки

т.е. "A='",N6,"' and ", до "A=",N6," and ",

=QUERY(INDIRECT("'Activity Log'!A3:O"),CONCATENATE("select count(A) where ",
  "A='",N6,"' and ",
  "E='",U3,"' and ",
  "I>=",N1," and ",
  "I<=",N2,
  IF(V1="Any", " and O='"&V1&"'"),
  IF(S2="All", " and H='"&S2&"'"),
  IF(S1="Include Both", " and M='"&S1&"'"),
" label count(A) ''"),0)
idfurw
9 августа 2021 в 01:43
0

Добавил более простую формулу, не могли бы вы попробовать?

idfurw
9 августа 2021 в 01:57
0

Исправлена. Пожалуйста, попробуйте еще раз. Вы можете выполнить отладку, проверив сам CONCATENATE.

idfurw
9 августа 2021 в 02:05
0

Вы также можете вывести список всех совпадающих записей, изменив select count(A) на select * и удалив " label count(A) ''".

William Toscano
9 августа 2021 в 04:54
0

Теперь я получаю #N/A, когда он должен был вернуть 3.

idfurw
9 августа 2021 в 05:00
0

Пожалуйста, поделитесь копией вашего листа