【问题标题】:Counting the distance between similar values by rows using excel-vba/udf使用 excel-vba/udf 按行计算相似值之间的距离
【发布时间】:2016-11-13 09:18:10
【问题描述】:

我在计算相似值之间的距离时遇到了麻烦,因为 excel 中没有可以实现这一点的函数,而我要处理 2000 行值。为此,我更喜欢 excel-vba,一个按钮可能会生成示例中的距离。当值太多时,数组公式会滞后于 excel。一个接一个地计算它们是浪费时间。请我想完成这个。如果有天才能做到这一点,我将不胜感激。

下面的示例显示了一个特定值与另一个值的距离:

【问题讨论】:

标签: vba excel excel-udf


【解决方案1】:

你可以试试这个

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

在您的“值”上进行了测试,除了单元格“K4”之外,它会返回相同的“值行间隙”:我希望这是您的错误计数...


如果您需要在相同的“相对”位置但在另一个工作表(例如:“sheet2”)上显示输出,那么只需更改

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

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

【讨论】:

  • 非常感谢我们老兄,我告诉我的朋友在你的个人资料中评价你所有的答案..这是我现在唯一能为你做的事情..
  • 先生,您有没有办法修改它,以便从另一个工作表显示? cell.Offset(, .Columns.Count + 1) = rowOffset 到工作表("sheet2").cell.Offset(, .Columns.Count + 1) = rowOffset ??也许?
  • 肯定有。请参阅已编辑答案的底部。 “技巧”是获取当前工作表中的输出单元格地址(cell.offset(, .Columns.Count + 1).Address)并将其提供给引用所需工作表的Worksheet 对象的Range 属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2017-04-06
  • 2013-12-16
  • 1970-01-01
相关资源
最近更新 更多