Board logo

標題: [發問] 登錄">0"值的連續個數(含1個) [打印本頁]

作者: johnny1680    時間: 2020-12-9 17:19     標題: 登錄">0"值的連續個數(含1個)

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

[attach]32778[/attach]
測試檔 :  [attach]32779[/attach]
A欄為>=0的各被比對值,各值之間不會有空白格。
B欄為計算A欄>0值的連續個數(含1個)之登錄欄。

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

請問︰B2的函數公式要怎麼寫?
謝謝!
作者: hcm19522    時間: 2020-12-10 13:02

https://blog.xuite.net/hcm19522/twblog/589503335
作者: johnny1680    時間: 2021-11-7 19:43

回復 2# hcm19522
謝謝您的指導!
作者: samwang    時間: 2021-11-9 13:01

回復 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
作者: samwang    時間: 2021-11-9 15:04

回復 2# hcm19522

A2數值不為0時,會有小問題,請確認,謝謝。
作者: 准提部林    時間: 2021-11-9 15:28

一般:
=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)))
作者: samwang    時間: 2021-11-10 08:18

不好意思,更新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
作者: 准提部林    時間: 2021-11-10 18:06

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
作者: johnny1680    時間: 2021-11-10 18:14

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)