Макрос 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,"")