У меня есть код VBA для расчета расстояния между двумя ячейками с одинаковыми значениями в таблице. Мне просто нужна разница строк между ячейками, которые могут находиться в разных столбцах, как показано на рисунке. Мне нужно только расстояние по оси "Y", а не по оси "X". У этого кода есть функциональность и дизайн, которые мне нужны, но он также рассчитывает расстояние по оси "X".
На приведенном ниже примере изображения в столбце B B5: Центральное соответствует ближайшему (внизу). B12: Центральное, а расстояние (количество строк между ними) равно 6. А в E1: 250 он совпадает с ближайшим G16: 250, а расстояние составляет 13.
У меня есть код:
Option Explicit
Sub main()
Dim cell As Range, f As Range
Dim rowOffset As Long
With Worksheets("gaps").Range("A2:F10") '<--| change this to your actual range of interest
For Each cell In .SpecialCells(xlCellTypeConstants, xlNumbers)
rowOffset = 1
Set f = .Find(what:=cell, after:=cell, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious)
If Not f Is Nothing And f.Row <= cell.Row Then rowOffset = cell.Row - f.Row + 1
cell.offset(, .Columns.Count + 1) = rowOffset '<--| the "+1" offset results range one column away from values range: adjust it as per your needs
Next cell
End With
End Sub