返回列表 上一主題 發帖

[發問] 連續N筆資料判別

[發問] 連續N筆資料判別

我想寫一個判斷品質的程式
大概內容為將數值與中心值CL判斷
在C欄
> CL =1
<CL =0
用此C欄判斷
然後在
D欄位標註是否連續7筆資料都是>CL
E欄位判斷是否連續7筆都是都是<CL

=========================程式碼==================
Dim side%, QQ%, QQ1%, CL As Variant
k = Cells(Rows.Count, 1).End(xlUp).Row
CL = Range("C1").Value
Range("C3:E" & k).ClearContents


If CL <> "" And k - 1 > 0 Then
    For i = 3 To k
     
     If Range("A" & i) > CL Then
     Range("C" & i) = 1
     Else
     Range("C" & i) = 0
     End If
      
    Next
End If
'==判斷是否連續7筆大於或小於CL========
For i = 3 To k
        If (Range("C" & i) = 1 And Range("C" & i + 1) = 1 And Range("C" & i + 2) = 1 And Range("C" & i + 3) = 1 And Range("C" & i + 4) = 1 And Range("C" & i + 5) = 1 And Range("C" & i + 6) = 1) Then
        Range("D" & i + 6) = 1
        
        ElseIf (Range("C" & i) = 0 And Range("C" & i + 1) = 0 And Range("C" & i + 2) = 0 And Range("C" & i + 3) = 0 And Range("C" & i + 4) = 0 And Range("C" & i + 5) = 0 And Range("C" & i + 6) = 0) Then
        Range("E" & i + 6) = 1
    End If
Next



QQ = Application.WorksheetFunction.Sum(Range("D3:D" & k))
QQ1 = Application.WorksheetFunction.Sum(Range("E3:E" & k))

If QQ >= 1 Then
MsgBox "連續7點在中心線同側(大於)"
End If

If QQ1 >= 1 Then
MsgBox "連續7點在中心線同側(小於)"
End If

================================================================
我在想是否有更好的寫法用來判斷
連續7筆資料>CL或<CL

請求指導
謝謝各位先進

Q test.zip (21.42 KB)

莫讓他人錯誤傷害自己

上面兩位真的是太神了
我完全沒辦法吸收(笑
要好好讀一讀⋯半路踏進vba 還真多東西要問啊
莫讓他人錯誤傷害自己

TOP

其實有些寫法我真的看不懂
但我都用測試的方式來理解各位的語言
VBA真是一條不歸路 (誤
莫讓他人錯誤傷害自己

TOP

回復  准提部林

感謝準大糾正XD

其實我已發現問題了,只是懶的改~

想說讀資料與寫資料都用同一個 ...
n7822123 發表於 2021-1-1 16:33



If Brr(R, 1) <> T Then T = Brr(R, 1): S = T
這一行我讀不懂
測試如果把它移除,就不會出現"連續小" 的標記跟訊息
Brr(R, 1) <> T ( T是從何而來?
莫讓他人錯誤傷害自己

TOP

這種比較簡單的概念我就代勞一下:
程式開頭就定義了 T% 表示它是個整數,
一開始沒特別去賦值時預設值是 ...
luhpro 發表於 2021-1-6 23:32



  Brr(R, 1) = IIf(Arr(R, 1) > CL, 1, -1)
  S = S + Brr(R, 1) : MsgBox S
'If S = N Then 連續大 = True: S = S - 1: Brr(R, 2) = 1  
'If S = -N Then 連續小 = True: S = S + 1: Brr(R, 3) = 1 '
  If Brr(R, 1) <> T Then T = Brr(R, 1) : MsgBox T: S = T  :MsgBox S

昨天用這種方式
終於搞懂了最後一行的意義....

謝謝您的協助編寫註解
莫讓他人錯誤傷害自己

TOP

        靜思自在 : 虛空有盡.我願無窮,發願容易行願難。
返回列表 上一主題