Как перевести формулу QUERY в ARRAYFORMULA для автоматического заполнения запроса QUERY для каждой строки - PullRequest
0 голосов
/ 12 апреля 2019

С моей формулой запроса я хочу подсчитать все повторяющиеся появления определенной строки в столбце A (например, Apple) и в то же время проверить, не является ли столбец B в той же строке, где появляется дублирующаяся строка, пустым. В зависимости от того, больше ли 0, я хочу отобразить сообщение в столбце C в каждой строке.

В предложении WHERE запроса я ссылаюсь на номер строки столбца A, в котором я хочу отобразить сообщение следующим образом:

…where A = '"&A1&"'…
…where A = '"&A2&"'…
…where A = '"&A3&"'…

...

=IF(IFERROR(QUERY($A:$B;"select COUNT(A) where A = '"&A1&"' and B is not
null LABEL COUNT(A) ''";0)) > 0;"B is not empty for duplicate strings";"B 
is empty for duplicate strings").  

Результат должен быть таким:

+---+---------+---+--------------------------------------+--+
|   |    A    | B |                  C                   |  |
+---+---------+---+--------------------------------------+--+
| 1 | Apple   | 1 | B is not empty for duplicate strings |  |
| 2 | Apple   |   | B is not empty for duplicate strings |  |
| 3 | Orange  |   | B is empty for duplicate strings     |  |
| 4 | Orange  |   | B is empty for duplicate strings     |  |
+---+---------+---+--------------------------------------+--+

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

Что я пробовал до сих пор:

={"YOUR HEADER";ARRAYFORMULA(IF(IFERROR(QUERY($A:$B;"select COUNT(A) 
where A = '"&A2&"' and B is not null LABEL COUNT(A) ''";0)) > 0;"B is 
not empty for duplicate strings";"B is empty for duplicate strings"))}

Это будет работать только для второй строки, так как мой запрос ссылается на столбец A2. Как я могу изменить формулу, чтобы она проверяла каждую строку?

1 Ответ

1 голос
/ 13 апреля 2019

На другом форуме я получил ответ.Для всех, кому интересно:

=ArrayFormula(IF(A2:A="";"";IF(QUERY(ArrayFormula(COUNTIF(QUERY(A2:B;"select A,
count(A) where B is not null group by A label count(A)''");A2:B));"select 
Col1")>0;"B is not empty for duplicate strings";"B is empty for duplicate strings")))
...