计算 VBA 函数中一行中完整的 'strings' 个数字

Count number of unbroken 'strings' of numbers across a row in VBA Function

我已经和这个问题斗争了好几天了,显然遗漏了一些东西。自从我上次使用 VBA 以来已经有一段时间了,我很难记住。

寻找一行中 'tours' 或连续 'strings' 个 1 的数量。

我正在寻找的数据和答案是这个(每个数字都在自己的列中):

0 0 1 1 1 0 1 0 1 = 3
1 0 0 0 0 0 0 0 0 = 1
0 0 0 0 1 1 1 1 1 = 1

已尝试过以下功能:

Function TOURCOUNT(TourList As Range)
Dim var As Variant

var = TourList.Value

For Each var In TourList
    If var = 1 And var + 1 = 1 Then
    TOURCOUNT = TOURCOUNT
    ElseIf var = 1 Then
    TOURCOUNT = TOURCOUNT + 1
    End If
Next

End Function

并且 运行 通过单元格:

Function NTOURS(TList As Range)

Dim var As Variant

For Each Cell In TList
    If Cell.Offset(0, 1).Value = 1 And Cell.Value = 1 Then
        NTOURS = NTOURS + 1
    End If
Next
End Function

还有一些其他的小变化。显然我没有正确理解某些东西。当我不小心偏移了行而不是列时,'And' evaluate Offset if 语句返回了错误的数字。但是当我更正它只是 returns 0.

如有任何帮助,我们将不胜感激!!

谢谢!

我不确定你想做什么,但从你的例子来看,这样的事情就可以了。

通常,您将范围作为参数传递,它进入行并在循环中进行两次检查。如果两项检查都成功,则 lngResult 递增。

Option Explicit

Public Function Uninterrupted(rngRange As Range) As Long

    Dim rngCell         As Range
    Dim lngResult       As Long
    Dim blnInterruped   As Boolean

    For Each rngCell In rngRange
        If rngCell Then
            If Not blnInterruped Then lngResult = lngResult + 1
            blnInterruped = True
        Else
            blnInterruped = False
        End If
    Next rngCell

    Uninterrupted = lngResult

End Function