Макрос Excel, чтобы найти дату в диапазоне и затем подсчитать для следующего изменения значения в соседнем столбце

Я пытаюсь написать макрос, чтобы найти 2 февраля каждого года в столбце A, а затем подсчитать количество строк (дней), пока значение в столбце B не изменится. Этот счет может быть помещен в новый столбец, столбец C, но в той же строке, что и 2 февраля, к которой он относится, в данном случае в строку 3.

Используя приведенную ниже таблицу, выходной сигнал для C3 будет равен 5. Я не считаю день 2 февраля, но я считаю день, когда происходит изменение. Это на 100+ лет, что мне нужно будет пройти через.

id |      A     |  B  |  C  
----------------------------
 1 | 1946/01/31 |  0  |  
 2 | 1946/02/01 |  0  |
 3 | 1946/02/02 |  0  |
 4 | 1946/02/03 |  0  |
 5 | 1946/02/04 |  0  |
 6 | 1946/02/05 |  0  |
 7 | 1946/02/06 |  0  |
 8 | 1946/02/07 |  2  |
 9 | 1946/02/08 |  0  |

1 ответ

Решение

Настоящая задача - сделать это по формуле. Ну, 2 формулы.

Скриншот

Первая формула в ячейке E2 находит дату 2 февраля путем поиска "02/02" в конце текста в столбце B и, если она найдена, помещает содержимое C2 в эту ячейку. если он не найден, он сравнивает C1 с D1, 2 ячейки выше, чтобы увидеть, совпадают ли они, потому что совпадение было найдено ранее, и если это так, он принимает содержимое ячейки выше. Это приводит к появлению нулей, которые можно увидеть в столбце E между 2 февраля и точкой, в которой изменяется столбец C.

Формула для E2, а затем автозаполнение до конца ваших данных

=IF(AND(MONTH(B2)=2,DAY(B2)=2),C1,IF(AND(E1<>"",E1=C1),E1,""))

Теперь все, что нам нужно сделать, это подсчитать ячейки в столбце D, ища первую непустую ячейку в столбце D AND(E1="",E2<>"") а затем сосчитать все ячейки, которые соответствуют этой ячейке. Я не уверен, какой разрыв вы ожидаете найти, но вы можете изменить 200, чтобы убедиться, что вы считаете все. Последняя часть состоит в том, чтобы убрать 1, чтобы 2-й ряд фев не учитывался.

Формула для D2, а затем автозаполнение до конца ваших данных

=if(AND(E1="",E2<>""),countif(E2:E200,E2)-1,"")
Другие вопросы по тегам