資料說明:
第一列為編號POSID,包括2017、2018、2019、2020,每個編號重復24次;
第二列為時間TIME,每個編號POSID都對應著7:00、7:05、……、8:55二十四個時刻;
第三位為速度SPEED,每個POSID在不同的時刻都有一個SPEED值。
我的需求:
找出SPEED變化率不小于20%的單元格,當累計的單元格個數超過3個時,則用藍色標記這些單元格的內容;
以圖片
中的資料為例:第一步:比較第三行與第二行的SPEED列資料,變化率7.89%<20%,繼續 比較第四行與第三行的SPEED列資料,變化為為12.86%<20%,繼續
比較第五行與第四行的SPEED列資料,變化率仍小于20%;……,直到
比較第九行與第八行的SPEED列資料,變化率為25%>20%
第二步:比較第十行與第八行的SPEED列資料,變化率為30%,繼續
比較第十一行與第八行的SPEED列資料,變化率為40%,……,直到
比較第十六行與第八行的SPEED列資料,變化率為15%<20%,則停止與 第八行的SPEED列資料的比較,
第三步:統計變化率不小于20%連續單元格個數為 8>4,則
第四步:選種變化率不小于20%的連續單元格,并用藍色標記。
第五步:比較第十七行與第十六行的SPEED列資料,重復以上步驟,直到找到滿 足條件的單元格,并用紅色標記出來。
我自己用VBA編了段代碼,可沒法實作我自己的目的:(
還望高手相助,謝謝!
uj5u.com熱心網友回復:
忘了把我自己的代碼貼上了:)uj5u.com熱心網友回復:
代碼如下:Sub TuBian()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim a As Single
Dim l As Integer
k = 0
For i = 2 To 18
For j = 3 To 18
a = Abs((Cells(j, 3).Value - Cells(i, 3).Value) / Cells(i, 3).Value)
If a < 0.2 Then
Next j
Next i
ElseIf a >= 0.3 Then
k = k + 1
l = k
If l > 3 Then
m = j - l - 1
Cells(m, 3).Select
Cells(j, 3).Select
Range("Km:Kj").Select
Cells(j, 3).Select
Selection.Font.ColorIndex = 5
i = j
End If
Next j
Next i
End Sub
uj5u.com熱心網友回復:
不是很理解。不過有點小建議:先算出變化的上下限,如70,變化率不超過20%,則范圍為56~84 ,以后只要直接比較大小即可。這樣你的代碼會簡單些,除錯起來也會方便很多.....
uj5u.com熱心網友回復:
好的,我試試看,謝謝!轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/132459.html
標籤:VBA
上一篇:modbus協議實作當中的問題
