2017-05-08 59 views
1

我一直在爭奪這一天數天,並且顯然缺少一些東西。自從我上次使用VBA以來,我一直在努力記住。在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 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 

而剛剛通過的細胞運行:

​​

和其他一些小的變化。很明顯,我並沒有正確地說明一些事情。 'And'評估偏移量當我意外偏移行而不是列時,if語句返回錯誤的數字。但當我糾正它只是返回0.

任何幫助將不勝感激!

謝謝!

回答

0

我不確定你想要做什麼,但從你的例子來看,這樣的事情會做的工作。

一般來說,您將範圍作爲參數傳遞,它會在行中進行,並在循環中進行兩次檢查。如果兩項檢查均成功,則lngResult將遞增。

enter image description here

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 
+0

謝謝,這正是我所需要的! – TessaB

+0

@TessaB - 酷! :) – Vityata

+1

由於您已經通過了檢查的整個範圍,因此您不需要使該功能變得不穩定。 – Rory