Таблицы Google: получение заголовков столбцов при наличии данных

Я пытаюсь получить заголовки столбцов на основе фильтра в таблице, и если данные возвращают 1. Например:

     ColA ColB ColC  ColD  ColE
Row1           Stat1 Stat2 Stat3
Row2 Bob  Hat  0     0     1
Row3 Bob  Glv  1     1     0

Итак, если у меня есть функция фильтра:

=FILTER(C2:E3, A2:A="Bob", B2:B="Glv")

Я бы хотел, чтобы возвращаемый ArrayFormula был {Stat1, Stat2} (или {Stat3}, если второе условие - "Hat").

Может кто-то указать мне верное направление? Спасибо.


person Spoonman    schedule 15.11.2017    source источник


Ответы (3)


Используйте двойной FILTER:

=FILTER(C1:E1,--FILTER(C2:E3, A2:A3="Bob", B2:B3="Glv"))
person TheMaster    schedule 15.11.2017
comment
С небольшим редактированием, чтобы удалить - это отлично работает! Спасибо! - person Spoonman; 16.11.2017
comment
Удаление - в этом случае дало мне тот же результат, что и вы перечислили. - person Spoonman; 16.11.2017

Я предположил, что вы хотите выбрать заголовок столбца, в котором в соответствующем столбце была одна или несколько единиц, поэтому придумал

=query({transpose(query(FILTER(A2:E, A2:A="Bob", B2:B="Glv"),"select sum(Col3),sum(Col4),sum(Col5)")),transpose(C1:E1)},"select Col3 where Col2>0")

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

person Tom Sharpe    schedule 15.11.2017

Используйте формулу как логическое выражение для IF, вложенного в ArrayFormula, используя пустой параметр для значения, если false:

=ArrayFormula(IF(FILTER(C2:E3, A2:A3="Bob", B2:B3="Hat"),C1:E1,))

Вышеупомянутое вернет {Stat1, Stat2,}

Чтобы удалить пустые элементы массива результатов, используйте JOIN и SPLIT:

=ArrayFormula(SPLIT(JOIN(",", IF(FILTER(C2:E3, A2:A3="Bob", B2:B3="Hat"), C1:E1,)), ",", FALSE))

person Rubén    schedule 15.11.2017