Возможно ли использовать ArrayFormula, как условное форматирование пользовательской формулы? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть простая электронная таблица Google Sheets, которая отслеживает, какую задачу выполнила группа людей. Когда каждый человек выполняет задачу, я использую простой флажок, чтобы пометить завершение:

Task:       A   B   C   D
Human 1     [x] []  []  []
Human 2     [x] [x] [x] []
Human 3     []  [x] []  [x]
Human 4     [x] [x] [x] [x]

Я ищу какой-нибудь способ получить последний столбец, который бы суммировал, какие задачи еще не были выполнены, например:

Task:       A   B   C   D       Not Yet Completed:
Human 1     [x] []  []  []      B, C, D
Human 2     [x] [x] [x] []      D
Human 3     []  [x] []  [x]     A, C 
Human 4     [x] [x] [x] [x]     (Blank)

Моя цель - сделать это, используя одну формулу, которая будет проходить через каждую строку и объединять имена столбцов для ящиков, которые не отмечены.

Я пытался использовать ARRAYFORMULA в сочетании с TEXTJOIN примерно так:

=TEXTJOIN(", ", TRUE, ARRAYFORMULA(IF(B2:E2=FALSE,$B$1:$E$1,"")))

Это делает то, что я хочу, но требует, чтобы я скопировал эту формулу в КАЖДУЮ строку, которую я хочувыслеживать.

Когда я пытаюсь применить текстовое соединение к двухмерному диапазону, он объединит ВСЕ текст в одну ячейку, а не применяет его к каждой строке по очереди:

=TEXTJOIN(", ", TRUE, ARRAYFORMULA(IF(B2:E5=FALSE,$B$1:$E$1,"")))

---Result---
Task:       A   B   C   D       Not Yet Completed:
Human 1     [x] []  []  []      B, C, D, D, A, C
Human 2     [x] [x] [x] [] 
Human 3     []  [x] []  [x] 
Human 4     [x] [x] [x] [x] 

В отличие от этого, когда я настраиваю пользовательскую формулу в условном форматировании, она позволяет мне «Применить к диапазону» (т.е. по нескольким строкам), но затем вводить формулу, ограниченную одной строкой. Затем он применяет эту формулу к каждой строке в диапазоне один за другим.

. Есть ли способ реализовать эту же концепцию "Применить к диапазону" внутри ячейки, используя ARRAYFORMULA или другие функции, встроенные в Google? Листы?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Трудный путь: использование & (это будет работать, если у вас фиксированное количество столбцов, в противном случае вам придется постоянно обновлять формулу)

={"Not Yet Completed:";arrayformula(if(A2:A="","",substitute(trim(if(B2:B," ",B1&" ")&if(C2:C," ",C1&" ")&if(D2:D," ",D1&" ")&if(E2:E," ",E1&" "))," ",", ")))}

TheПростой способ: использование заголовка запроса (почти так же, как ответ player0, но немного альтернативный способ сделать это)

={"Not Yet Completed:";arrayformula(if(A2:A="","",substitute(trim(transpose(query(transpose(if(B2:E5,"",B1:E1)),"",columns(B1:E1))))," ",", ")))}
0 голосов
/ 06 ноября 2019

попробовать:

=ARRAYFORMULA(REGEXREPLACE(TRIM(TRANSPOSE(QUERY(TRANSPOSE(
 IF((B2:E<>"")*(B2:E=FALSE), B1:E1&",", )),,999^99))), ",$", ))

enter image description here

демонстрация электронной таблицы

...