Да, довольно бодрый вариант... Шустрый и на предложенных данных работает без ошибок... кажется...

Да нет, действительно без ошибок, это я по привычке осторожничаю.
Пару моментов, наверное, стоило бы улучшить.
Во-первых, нам просто повезло, что данные в тестовой книге уже были отсортированы по убыванию даты-времени. Шли бы они в случайном порядке или хотя бы пара десятков дат уползли бы со своего места вверх или вниз - получили бы мы две-три тысячи значений, которые ни о чём не говорят. Поэтому, раз уж второй цикл ориентируется на строгое последовательное убывание дат, то начать макрос, пожалуй, следовало бы с принудительной сортировки данных. То ли прямо данные в листе отсортировать, то ли на массив D1 QuickSort натравить...
И во-вторых, тысяча ReDim'ов D2 - это сильное замедление алгоритма. Лучше было бы сразу определить его размером с D1 (больше не надо, на больше у нас значений не хватит), а в самом конце одним ReDim'ом обрезать лишний незаполненный хвост...
Повеселил конструкцией
N = UBound(ThisComponent.getSheets().getByIndex(0).getData())
Сам придумал или где-то на форумах нарыл?
