Введите с помощью Control + Shift + Enter, чтобы сделать его формулой массива.В B1
=LARGE((ROW($A$1:$A$10))*($A$1:$A$10=1),SUM(--($A$1:$A$10=1))-(ROW()))-LARGE((ROW($A$1:$A$10))*($A$1:$A$10=1),SUM(--($A$1:$A$10=1))-(ROW()-1))-1
и заполните вниз.Формула состоит из вычитания двух функций LARGE и последующего вычитания 1 из результатов.
Первый аргумент функций LARGE - это массив, который возвращает номер строки для каждой записи, содержащей 1.
(ROW($A$1:$A$10))*($A$1:$A$10=1)
Вторым аргументом для функций LARGE является формула массива SUM, которая считает все записи с 1, а затем вычитает текущий номер строки (или номер текущей строки -1).Для формулы в B1 это будет возвращать 3-1 (или 2, количество всех записей с одним (3) меньше номера строки (1)).
Для второй функции LARGE второй аргументвернул бы 3-0 (3).
Все это говорит, дайте мне 2-ую самую большую строку для записей, которые содержат 1, и вычтите 3-ую самую большую строку для записей, которые содержат 1.
Когда вы заполняете до B2, это становится: дайте мне 1-ую самую большую строку для записей, которые содержат 1, и вычтите 2-ую самую большую строку.результат исключительный (а не включающий) строк, которые содержат 1.
Я знаю, что вы просили макрос, но вы можете найти формулы более подходящими.