У меня есть Google Sheet с именем «Календарь», отформатированный следующим образом:
Имена сотрудников есть в Календаре!A2:А вот так:
На отдельной вкладке «Посещаемость» в ячейке A2:A находятся все имена из календаря!A2:A. Я пытаюсь выяснить, как подсчитать, сколько раз значение «Out» появляется в строке, связанной с каждым сотрудником. Я перепробовал много разных формул, но не смог добиться никаких результатов.
Вот как это должно выглядеть на листе «Посещаемость», исходя из данных листа «Календарь»:
С помощью следующей формулы я могу получить фактические результаты, но не подсчет: =INDEX(Calendar!$B$2:$N$7, MATCH(A2,Calendar!$A$2:$A$7,0))
. Кроме того, я бы предпочел добиться этого с помощью ARRAYFORMULA
.
Вы можете попробовать добавить эту формулу в B2.
=MAP(tocol(A2:A,1),LAMBDA(k,reduce(0,FILTER(Calendar!A:N,Calendar!A:A=k),lambda(a,c,if (isnumber(search("Out",c)),a+1,a+0)))))
Прошу прощения, я исправил формулу, и теперь она должна работать независимо от порядка таблицы посещаемости.
= {Calendar!$A2,COUNT(ARRAYFORMULA(FIND("Off", Calendar!$B2:$N2)))}
Это сработает, если я изменю формулу на = {Calendar!$A2,COUNT(ARRAYFORMULA(FIND("Out", Calendar!$B2:$N2)))}
и перетащу формулу вниз по столбцу A, но я не мог понять, как расширить ее до ARRAYFORMULA
.
Какова цель ARRAYFORMULA?
Чтобы вывести всех сотрудников с выходными днями вниз по столбцу, не перетаскивая формулу вниз по мере роста числа сотрудников.
Вы можете попробовать:
=map(A2:index(A:A,match(,0/(A:A<>""))),lambda(Σ,countif (filter(Calendar!B:Z,Calendar!A:A=Σ),"*Out*")))
Оказывается, это лучший ответ. Спасибо. Очень адаптируется к моим потребностям.
Я видел, как вы недавно использовали этот синтаксис несколько раз, но я не могу понять, почему A2:index(A:A,match(,0/(A:A<>""))) работает чтобы найти последнюю строку со значениями. Можете ли вы предоставить какие-либо отзывы, которые могли бы помочь объяснить это?
@Kreeszh определенные функции, такие как index
, offset
, xlookup
, при использовании в сочетании с оператором диапазона: (двоеточие) будут обслуживать адрес ячейки вместо значения, присутствующего в этом адресе. Его можно использовать в формах index():index() или index(): или :index() i.sstatic.net/AJLWgOn8.png
Спасибо. Это работает, если имена на вкладке «Посещаемость» расположены в том же порядке, что и имена на вкладке «Календарь».