使用excel-vba / udf按行计算相似值之间的距离

时间:2016-07-11 12:17:05

标签: excel vba excel-vba excel-udf

我在计算相似值之间的距离时遇到了麻烦,因为excel中没有可以实现此功能的函数,而且我处理了2000行值。我更喜欢excel-vba,这个按钮可能会像示例中那样生成距离。当值太多时,数组公式落后于excel。将它们逐一计数将是浪费时间。我想完成这件事。如果有一些天才可以解决这个问题,我会非常感激。

下面的示例显示了另一个特定值的距离: enter image description here

1 个答案:

答案 0 :(得分:0)

你可以试试这个

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

测试你的&#34;值&#34;它给出了相同的&#34;值行间隙&#34;除了细胞&#34; K4&#34;:我希望你的错误计算......

你是否需要在相同的&#34;亲戚&#34;中显示输出?位置但在另一个工作表上(例如:&#34; sheet2&#34;)然后只需更改

cell.offset(, .Columns.Count + 1) = rowOffset

Worksheets("sheet2").Range(cell.offset(, .Columns.Count + 1).Address) = rowOffset