当前位置:编程学习 > VB >>

【求助】求助代码:循环比较单元格的内容,将满足规定条件的单元格内容用蓝色标记

数据说明:
第一列为编号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编了段代码,可没法实现我自己的目的:(
还望高手相助,谢谢! 忘了把我自己的代码贴上了:) 代码如下:
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 不是很理解。
不过有点小建议:先算出变化的上下限,如70,变化率不超过20%,则范围为56~84 ,以后只要直接比较大小即可。这样你的代码会简单些,调试起来也会方便很多..... 好的,我试试看,谢谢!
补充:VB ,  VBA
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,