Рассчитать текущую полосу в строке Excel - PullRequest
2 голосов
/ 03 апреля 2019

У меня есть список 1 и 0 в строке Excel, начиная с B2: K2, я хочу вычислить текущую полосу 1 в ячейке M2,

пример набора данных, где полоса будет 4

1 0 1 0 1 1 1 1 0

Есть ли простой способ сделать это? Я попробовал исследование, но не смог найти что-то конкретное.

Любая помощь будет высоко ценится.

Ответы [ 3 ]

4 голосов
/ 03 апреля 2019

Вот способ сделать это только с одной формулой, без вспомогательных столбцов / строк:

enter image description here

Используемая формула переводится как:

{=MAX(FREQUENCY(IF(B1:K1=1,COLUMN(B1:K1)),IF(B1:K1=1,0,COLUMN(B1:K1))))}

Примечание. Формула массива должна вводиться через Ctrl Shift Ввод

2 голосов
/ 03 апреля 2019

Предполагая, что ваши данные расположены горизонтально, как показано на рисунке ниже, следующие две формулы должны сделать это для вас.

Первая ячейка требует другой формулы, так как слева от нее нет ссылки. поэтому простая формула для проверки, является ли первая ячейка единицей, введена в B2.

=--(A1=1)

Часть в скобке будет либо истинной, либо ложной. Причудой Excel является то, что если вы отправите значение true или false с помощью математической операции, оно будет преобразовано в 1 для true и 0 для false. Вот почему вы видите двойной - впереди. мог бы также сделать * 1, / 1, + 0, -0 в конце.

В B2 поместите следующую формулу и, при необходимости, скопируйте право:

=(A2+1)*(B1=1)

В основном это добавляет 1 к серии, затем проверяет, является ли число в последовательности 1 или 0. В случае его единица, оно сохраняет значение, как ИСТИНА, отправленное через математический оператор *. Если значение равно false, последовательность возвращается к нулю путем умножения False на математический оператор *.

Альтернативный IF

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

A3
=IF(A1=1,1,0)

B3 ->Copied right
=IF(B1=1,A3+1,0)

Самая длинная полоса

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

=MAX(2:2)

=MAX(A2,I2)

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

POC

0 голосов
/ 03 апреля 2019

Я поместил эти значения в ячейки от B2 до B8.

В ячейку C3 я поместил эту формулу:

=IF(AND(B3=1;B2=1);C2+1;1)

Перетащите это вниз до C8, а затем возьмите максимум столбца C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...