У меня была похожая проблема. Мой подход был уродливым и неэффективным, но он работал.
Я сделал второй столбец, который смотрел, было ли значение соседней ячейки тем, что я искал, и, если это так, задаю число 0+ значение ячейки над ним во втором столбце.
Я сделал третий столбец, в котором каждая ячейка смотрела на соседнюю ячейку в столбце 2, и, если значение было больше, чем значение под ним, чтобы получить значение 0+, максимальное значение в третьем столбце до строки ячейки , Если нет, то он выплевывает пустое значение (""). Таким образом, я смог поставить порядковый номер идентификатора.
Я сделал четвертый столбец, в котором смотрел на соседнюю ячейку в столбце 3 и, если это было какое-либо значение, кроме пустого, поместил значение этой строки из столбца 2.
Затем я создал пятый столбец, который начинался с 1, и каждая строка была на одну строку выше предыдущей, вплоть до максимального значения из столбца 3.
Я закончил, сделав шестой столбец, который использовал функцию поиска. Значением поиска будет соседняя ячейка в столбце 5. Диапазон будет столбец 3 и 4. Я бы выплюнул значение из колонки 4.
Я определяю последовательность идентичных значений как пробег. Каждое число в столбце 5 представляет пробег. Каждое число в столбце 6 представляет размер этого прогона. Это позволяет вам генерировать размеры каждого из прогонов.
Как я уже сказал, это ужасный способ сделать это, и, вероятно, его можно было бы написать намного чище в VBA, но он эффективен.