Оператор IF внутри QUERY в Google Таблицах

У меня есть таблица Google, в которой перечислены несколько проектов. С помощью функции QUERY я извлекаю информацию на другой лист для целей отчетности.

Я использую формулу: = ЗАПРОС ($ A $ 2: $ D $ 8, "ЕСЛИ (ИЛИ ($ C2 = 1, $ C2 = 2, $ C2 = 3), выберите A, B, D, выберите A, B , В) ", 0)

Что я изо всех сил пытаюсь сделать, так это разместить оператор IF внутри функции QUERY.

Я хотел бы получить значение Date 2 (Col4), если значение Status (Col2) равно «1», «2» или «3». В противном случае, если значение Status (Col2) равно «4», «5» или «6», я бы хотел, чтобы запрос возвращал дату 1 (Col3).

Любая помощь будет принята. Спасибо!

Снимок экрана


person Leonel Romero    schedule 18.10.2018    source источник
comment
Вы должны взять оператор if вне своего запроса, как в этом ответе: stackoverflow .com / questions / 50070600 / if-statement-in-query.   -  person Tom Sharpe    schedule 19.10.2018
comment
Извините за (очень) поздний ответ. Я просто попытался реализовать решение из другого ответа, и это не сработало для меня. Я стремлюсь достичь: в столбце E (только в этом столбце) запрос должен отображать значение Col4, ЕСЛИ значение в Col2 равно ‹= 3 (меньше или равно 3). В противном случае, ЕСЛИ значение в столбце 2 - ›3, запрос должен отображать (в том же столбце E) значение столбца 3.   -  person Leonel Romero    schedule 07.12.2018


Ответы (2)


Формула будет такой:

=ArrayFormula(query({A2:B8,if(B2:B8<=3,D2:D8,C2:C8)},"select *"))

Но на самом деле запрос ничего не делает.

Итак, вы можете просто использовать:

=ArrayFormula({A2:B8,if(B2:B8<=3,D2:D8,C2:C8)})

введите здесь описание изображения

person Tom Sharpe    schedule 07.12.2018
comment
Спасибо, Том! Это сработало. Я просто изменил select * на Col3, так как мне нужен только запрос, чтобы показать подходящую дату в зависимости от условия IF. - person Leonel Romero; 07.12.2018

Таким образом, в запрос можно включить оператор IF. Главное помнить, что запрос является текстовым, поэтому вам нужно закончить цитаты, включив вашу ссылку, а затем перезапустить цитаты. Это похоже на создание предложения с помощью формулы. Например, вы можете добавить следующий текст для вторичного условия:

"&if(T3="",""," and H = '"&T3&"'")&"

Я хотел иметь возможность сузить результаты условно. Итак, если у меня есть значение в T3, то в мой запрос добавляется условие для столбца H. В противном случае он не учитывается.

Если я что-то напортачил или не понимаю, вот моя полная формула. У меня также есть запрос с использованием фильтров, которые находятся в Q3, R3 и S3.

=query(Transactions!B1:H, "select B,C,D,E,F,G where B > date '"&TEXT(DATEVALUE(Q3),"yyyy-mm-dd")&"' and B <= date '"&TEXT(DATEVALUE(R3),"yyyy-mm-dd")&"' and D = '"&S3&"'"&if(T3="",""," and H = '"&T3&"'")&" order by B desc limit 50",1)
person Adam    schedule 12.03.2020