Как считать до определенного значения? - PullRequest
0 голосов
/ 26 июня 2018

Я просто использую формулы в Excel, и мне было интересно, как можно посчитать все 0, пока не будет достигнута 1, а затем начать процесс заново. Возможно ли это только с помощью формул?

Прямо сейчас я пытаюсь использовать,

=COUNTIF(INDIRECT(F2:F28,0)),1)

... но, похоже, не работает.

Данные:

0
1
0
1
1
0
0
0
0
0
0
1
0
1
0

Ответы [ 6 ]

0 голосов
/ 26 июня 2018

То, что вы здесь описываете, называется циклом (Do) While в VBA.
Следует признать, что VBA гораздо лучше приспособлена для обработки, чем формула - буквально требуется несколько строк кода. Должно быть что-то, что вы должны рассмотреть

Вы можете технически подделать Do While по формуле. Но это Вообще практика, которую я бы точно не рекомендовал.

Предполагается, что ввод данных начинается в ячейке F2, а затем в соседнем столбце G2
=IF(F2=0, SUM(G1, 1), 0) и перетащите формулу через. Выдает ожидаемый результат

enter image description here

0 голосов
/ 26 июня 2018

У меня есть решение, но оно не очень элегантное. Может быть, кто-то еще может улучшить это. Но вот оно:

Предположим, ваши данные в столбце А.

1) В B1 введите 1, если A1 - это 0 или 0, если A1 - это 1.

2) В B2 введите формулу =IF(A2=0,B1+1,0)

3) Перетащите приведенную выше формулу до конца

4) В C1 введите формулу =IF(B1>B2,B1,"")

5) Перетащите приведенную выше формулу до конца

6) В столбце C теперь должно быть все количество нулей.

0 голосов
/ 26 июня 2018

В В2 введите:

=IF(OR(A2=0,A1=1),"",COUNTIF($A$1:A1,0)-SUM($B$1:B1))

и копировать вниз:

enter image description here

0 голосов
/ 26 июня 2018

Вы можете использовать следующую формулу в столбце B:

=IF(A3=1,COUNTIF(A$1:A2,0)-SUM(B$1:B1),"")

начиная со строки 2 и перетащите его вниз.

0 голосов
/ 26 июня 2018

Кажется, это работает в соответствии с вашими образцами данных,

=COUNTIF(F2:INDEX(F:F, IFERROR(AGGREGATE(14, 7, ROW($1:2)/(F$1:F2=1), 1), ROW(F2))), 0)

enter image description here

0 голосов
/ 26 июня 2018

Поместите 1 в ячейку рядом с первым 0 (в моем примере это A1, поэтому я поставил 1 в B1);
Тогда попробуйте это = IF (A2 = A1; B1 + 1; 1)

...