如何计算一个值的数量?

时间:2016-06-14 09:22:36

标签: excel excel-vba excel-udf vba

我正在连续处理956个值。我在获取每个值中的行距离时遇到问题,因为它们太多了。有没有办法使用带按钮的Excel-VBA来实现这一目标?

例如: 这显示了计算行距离的次数。

enter image description here

1 个答案:

答案 0 :(得分:3)

使用以下代码创建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

这就是您需要的所有代码。现在,在Sheet中将此公式放在单元格I5中,即结果表的左上角单元格中:

=Distance($A$1:$F$11, $H5, I$4)

根据左侧源表中的行数,您可能需要将该公式中的11调整为更大的数字,以便在那里引用整个表。

然后将此公式复制到输出表的其余部分:水平拖动/复制,然后选择该行,然后向下拖动/复制。

该表格也将填充许多零。要摆脱这些,请使用cell formatting。使用此自定义格式:

0;-0;

这是结果(忽略您在公式中看到分号;这些与我的区域设置有关):

enter image description here

不需要按钮。结果会像任何其他标准公式一样更新。

请注意,如果需要,您可以使用其他名称命名您的函数,但请确保对工作表中的公式进行相同的更改。