Я новичок в работе с формулами Google Sheets/Exel, поэтому мне трудно подсчитать количество строк, пока я не получу определенное значение, и это несколько раз в одном и том же столбце.
Пример ниже, я хотел бы установить ARRAYFORMULA в B1, чтобы я мог получить эти результаты:
Цель состоит в том, чтобы подсчитывать необработанные данные, пока я не получу значение «1» в столбце A и не помещу результат в столбец B:
Поэтому, очевидно, я мог бы использовать что-то вроде:
B2=IF(A2=0;IF(ISNUMBER(B1);B1+1;1);0)
И разверните эту формулу для каждой ячейки в столбце B.
Но я действительно хотел бы получить ARRAYFORMULA в B1, чтобы сделать это.
Я пытался использовать:
B1=ARRAYFORMULA({"Result";IF(A2:A=0; COUNTIFS(A2:A; 0; ROW(A2:A);"< = "&ROW(A2:A)); 0)})
Но, как вы можете предположить, это не сработает, потому что A2 останется значением, с которого сделан подсчет. Кроме того, идет обратный отсчет.
Мы получили бы что-то вроде , чего я не хочу:
Я действительно изо всех сил пытаюсь увеличить значения с помощью формул массива, поэтому, если кто-то сделал что-то подобное, помощь будет оценена по достоинству.
Вы можете попробовать:
=let(Γ;index(A:A;index(match(2;1/(A:A<>""))));
map(A2:Γ;lambda(Σ;if (Σ=1;0;xmatch(1;offset(Σ;1;):Γ)))))
Вот еще одно решение:
=LET(val,A2:INDEX(A2:A,MATCH(9^9,A2:A)),
REV,LAMBDA(arr,SORT(arr,SEQUENCE(ROWS(arr)),)),
REV(SCAN(,REV(val),LAMBDA(a,c,IF(c,0,a+1)))))
Он использует SCAN
для сброса текущего счетчика, когда и входной, и выходной массивы REV
ersed.
Просто для спорта, здесь у вас есть опция, которая фильтрует строку результатов и складывает уменьшающиеся последовательности:
=LET(f,{0;FILTER(SEQUENCE(ROWS(A2:A)),A2:A=1)},
REDUCE("RESULT",SEQUENCE(COUNTA(f)-1), LAMBDA(a,b,
{a;LET(d,INDEX(f,b+1)-INDEX(f,b), SEQUENCE(d,1,d-1,-1))})))
Спасибо вам, ребята! Много новых ключевых слов для ознакомления. Я не знал, что есть что-то вроде LAMBDA, похоже, это ключевое слово дает гораздо больше возможностей для GS/XL!
LAMBDA и ее вспомогательные функции (BYROW, BYCOL, REDUCE, SCAN, MAKEARRAY) очень мощные! И теперь у вас есть LET пару месяцев назад, что позволяет вам иметь логический порядок в именовании переменных и упорядочивании процессов. Удачи!
Спасибо за вашу реакцию, это прекрасно работает. Теперь пора понять, почему!