Как подсчитать в столбце, сколько строк осталось, пока я не получу определенное значение в другом столбце?

Я новичок в работе с формулами Google Sheets/Exel, поэтому мне трудно подсчитать количество строк, пока я не получу определенное значение, и это несколько раз в одном и том же столбце.

Пример ниже, я хотел бы установить ARRAYFORMULA в B1, чтобы я мог получить эти результаты:

Строка столбец А Б 1 Ценить Результат 2 0 1 3 1 0 4 0 1 5 1 0 6 0 4 7 0 3 8 0 2 9 0 1 10 1 0

Цель состоит в том, чтобы подсчитывать необработанные данные, пока я не получу значение «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 останется значением, с которого сделан подсчет. Кроме того, идет обратный отсчет.

Мы получили бы что-то вроде , чего я не хочу:

Строка столбец А Б 1 Ценить Результат 2 0 1 3 1 0 4 0 2 5 1 0 6 0 3 7 0 4 8 0 5 9 0 6 10 1 0

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
85
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы можете попробовать:

=let(Γ;index(A:A;index(match(2;1/(A:A<>""))));
   map(A2:Γ;lambda(Σ;if (Σ=1;0;xmatch(1;offset(Σ;1;):Γ)))))

Спасибо за вашу реакцию, это прекрасно работает. Теперь пора понять, почему!

Thomas 05.04.2023 22:34

Вот еще одно решение:

=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 для сброса текущего счетчика, когда и входной, и выходной массивы REVersed.

Просто для спорта, здесь у вас есть опция, которая фильтрует строку результатов и складывает уменьшающиеся последовательности:

=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!

Thomas 06.04.2023 10:26

LAMBDA и ее вспомогательные функции (BYROW, BYCOL, REDUCE, SCAN, MAKEARRAY) очень мощные! И теперь у вас есть LET пару месяцев назад, что позволяет вам иметь логический порядок в именовании переменных и упорядочивании процессов. Удачи!

Martín 06.04.2023 14:55

Другие вопросы по теме

Похожие вопросы

Есть ли способ в скрипте Google Apps перечислить файлы, расположенные в нескольких папках моего Google Диска, на одной вкладке Google Sheets?
Улучшить производительность формулы Google Sheet
Скопируйте лист Google с учетной записью службы, а затем передайте право собственности другому пользователю gspread 5.7.1
Функция запроса Google Таблиц - где столбец не равен определенному диапазону ячеек
Как получить сообщение об ошибке из ячейки листа Google с помощью скрипта Google Apps?
Условное форматирование, если ячейки в столбце содержат точное совпадение, частичное или ни одно из значений в ячейке
ЗАПРОС IMPORTRANGE, где на столбцы ссылаются именованный диапазон или заголовок?
Как вернуть категорию, если один из ее элементов частично соответствует введенному значению?
Есть ли способ в Google Таблицах создать гиперссылку в ячейке, указывающую на локальный файл на моем ПК?
Удалить ВСЕ строки из GSheet (пустые и не пустые)