Создать user-defined function in a module, с этим кодом:
Option Explicit
Public Function Distance(matrix As Range, value As Long, rowCount As Long)
Dim cell As Range
Dim lastRow As Long
Dim result As Long
lastRow = 1
For Each cell In matrix
If cell.value = value Then
If cell.row - lastRow + 1 = rowCount Then result = result + 1
lastRow = cell.row
End If
Next
Distance = result
End Function
То есть весь код, что вам нужно. В настоящее время в листе поставить эту формулу в ячейку I5
, т.е. верхний левый ячейку вашей таблицы результатов:
=Distance($A$1:$F$11, $H5, I$4)
В зависимости от того, сколько строк в исходном таблице на левой стороне, вы, возможно, потребуется настроить 11
в этой формуле до некоторого большего числа, так что там указана вся таблица.
Затем скопируйте эту формулу в остальную таблицу вывода: перетащите/скопируйте по горизонтали, затем выберите эту строку и перетащите/скопируйте ее вниз.
В таблице также будет множество нулей. Чтобы избавиться от них, используйте cell formatting. Используйте этот пользовательский формат:
0;-0;
Это результат (игнорировать, что вы видите точку с запятой в формуле, а те, которые связаны с моими региональными настройками):
Там нет необходимости кнопки. Результаты обновляются, как и любая другая стандартная формула.
Обратите внимание, что вы можете назвать свою функцию с другим именем, если хотите, но не забудьте сделать то же самое изменение в формулах, которые у вас есть на листе.