Мне нужно записать количество переходов из нижнего состояния (0) в верхнее состояние (1) в одном столбце в Excel, и мне интересно, есть ли какая-то логика, подобная этой, доступная в Excel, или могу ли я программировать такого рода логики в VBA. Однако я не очень хорошо разбираюсь в VBA, поэтому, если есть какие-либо ссылки, это было бы здорово.
4 ответа
Вы можете получить счет с помощью одной формулы SUMPRODUCT
. Если ваши данные в A1:A25
, вы можете использовать следующее:
=SUMPRODUCT((A1:A25=0)*(A2:A26=1)*(NOT(ISBLANK(A1:A25))))
Это учитывает только те случаи, когда одно значение в столбце равно 0 (а не пусто), а следующее значение равно 1.
Мое решение предполагает чистые данные, начиная с ячейки A2 и переходя вниз к столбцу A. Для моей формулы это также предполагает отсутствие данных после строки 1000 (отрегулируйте это значение для большинства реальных данных.
Формула является формулой массива, поэтому введите, используя Ctrl + Shift + Enter
=SUM(IF(A2:A1000=0,IF(A3:A1001=1,1,0),0))
Как работает формула
Для каждой ячейки от A2 до A1000 ищите ноль, если в следующей ячейке есть ноль. Если в следующей ячейке есть один, добавьте его к счетчику. Обратите внимание, что пустая ячейка будет считаться нулем.
Конец диапазонов (A1000 и A1001) просто должен быть за концом данных.
Если вы хотите отслеживать изменения только снизу вверх (при условии, что ваши данные находятся в столбце A), все, что вам нужно, это =N(A2>A1)
затем перетащите формулу вниз.
Это оценивается как TRUE
если значение увеличилось (снизилось вверх), тогда N(boolean)
преобразуется в это значение в 1 или 0.
Чтобы отслеживать все изменения состояния, вы должны использовать =N(A2<>A1)
Чтобы подсчитать все изменения состояния, вы должны суммировать столбец.
Вы можете использовать формулу для обнаружения переходов от 1 до 0 и от 0 до 1. Просто будьте осторожны с пустыми клетками!
Рассмотрим следующий пример (см. Скриншот ниже):
столбец B содержит шаблон двоичных данных.
C2 будет содержать следующую формулу:
=IF(AND(NOT(ISBLANK(B3)),B2=1,B3=0),1,0)
D2 будет содержать:
=IF(AND(NOT(ISBLANK(B3)),B2=0,B3=1),1,0)
Вам просто нужно будет автоматически заполнить формулу для столько строк, сколько вам нужно в столбцах C и D.
- Количество 1 (единиц) в столбце C будет представлять количество переходов от 1 до 0.
- Количество 1 (единиц) в столбце D будет представлять количество переходов от 0 до 1.
И в конце вам нужно сложить единицы (1) в столбцы C и D
В примере ниже:
D18=SUM(C2:C16)
D19=SUM(D2:D16)