在VBA函数中计算一行中的不间断“串”string的数量

我一直在为这个争斗好几天,显然是失去了一些东西。 自从我上一次使用VBA以来,我一直在努力记住。

寻找一行中“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:

 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 

还有一些其他的小变化。 很明显,我没有正确地说明一些事情。 '和'评估偏移如果语句返回错误的数字时,我意外偏移行而不是列。 但是,当我纠正它只是返回0。

任何帮助将不胜感激!!

谢谢!

我不确定你想做什么,但从你的例子来看,这样的事情会做的工作。

一般来说,你将范围作为parameter passing,它在行中,并在循环中进行两次检查。 如果两个检查都成功,则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