返回列表 上一主題 發帖

[發問] 登錄">0"值的連續個數(含1個)

[發問] 登錄">0"值的連續個數(含1個)

本帖最後由 johnny1680 於 2020-12-9 17:21 編輯


測試檔 :   登錄大於0值的連續個數(含1個).rar (2.92 KB)
A欄為>=0的各被比對值,各值之間不會有空白格。
B欄為計算A欄>0值的連續個數(含1個)之登錄欄。

需求︰
請將A欄>0值計算後的1個和連續n個的個數,
登錄於A欄各段>0連續值的最末值之同列B欄儲存格

請問︰B2函數公式要怎麼寫?
謝謝!

google"EXCEL迷"  blog  或google網址:https://hcm19522.blogspot.com/

TOP

回復 2# hcm19522
謝謝您的指導!

TOP

回復 1# johnny1680

請測試看看,謝謝
Sub test()
Dim Arr, Brr(), T0%, T%, T1%, s
Arr = Range([a1], [a65536].End(3))
ReDim Brr(1 To UBound(Arr), 1 To 1)
For i = 2 To UBound(Arr)
    If i > 2 Then T0 = Arr(i - 1, 1)
    T = Arr(i, 1)
    If i < UBound(Arr) Then
        T1 = Arr(i + 1, 1)
    Else
         If T <> 0 Then Brr(i, 1) = i - s
    End If
    If T = 0 Then
        s = i
    Else
        If T1 = 0 And s <> "" Then: Brr(i, 1) = i - s
    End If
Next
[b1].Resize(UBound(Arr), 1) = Brr
[b1] = "登錄"
End Sub

TOP

回復 2# hcm19522

A2數值不為0時,會有小問題,請確認,謝謝。

11.PNG (14.51 KB)

11.PNG

TOP

一般:
=IF(OR(A2=0,A3>0),"",COUNTIF(A$1:A2,">0")-SUM(B$1:B1))

陣列:
=IF(OR(A2=0,A3>0),"",ROW()-MATCH(2,0/ISERR(0/A$1:A1)))

TOP

不好意思,更新4#程式如下紅字,看了准大解答終於了解題意,謝謝
Sub test()
Dim Arr, Brr(), T0%, T%, T1%, s
Arr = Range([a1], [a65536].End(3))
ReDim Brr(1 To UBound(Arr), 1 To 1)
s = 1
For i = 2 To UBound(Arr)
    If i > 2 Then T0 = Arr(i - 1, 1)
    T = Arr(i, 1)
    If i < UBound(Arr) Then
        T1 = Arr(i + 1, 1)
    Else
         If T <> 0 Then Brr(i, 1) = i - s
    End If
    If T = 0 Then
        s = i
    Else
        If T1 = 0 Then: Brr(i, 1) = i - s
    End If
Next
[b1].Resize(UBound(Arr), 1) = Brr
[b1] = "登錄"
End Sub

TOP

Sub test()
Dim Arr, V&, N&
Arr = Range([a1], [a65536].End(3)(2))
For i = 2 To UBound(Arr) - 1
    V = Val(Arr(i, 1)): Arr(i, 1) = ""
    If V = 0 Then GoTo 101 Else N = N + 1
    If Val(Arr(i + 1, 1)) = 0 Then Arr(i, 1) = N: N = 0
101: Next
Arr(1, 1) = "登錄"
[b1].Resize(UBound(Arr) - 1, 1) = Arr
End Sub

TOP

回復 6# 准提部林
回復 7# samwang
回復 8# 准提部林
感謝二位大大的不吝指導~感恩喔   

TOP

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題