Excel 为一系列递增单元格的最后一个单元格着色
我正在尝试创建一个宏,使单元格的颜色高于上一个。我只想给30个单元格后面的单元格上色,每个单元格都比前一个高。在这个屏幕截图中,如果我有这样一个系列,只有E35应该是彩色的,因为从E5到E35,这30个单元中的每一个都严格高于它们的前一个单元(E35>E34>E33>…>E6>E5) 这是我尝试执行的代码:Excel 为一系列递增单元格的最后一个单元格着色,excel,vba,Excel,Vba,我正在尝试创建一个宏,使单元格的颜色高于上一个。我只想给30个单元格后面的单元格上色,每个单元格都比前一个高。在这个屏幕截图中,如果我有这样一个系列,只有E35应该是彩色的,因为从E5到E35,这30个单元中的每一个都严格高于它们的前一个单元(E35>E34>E33>…>E6>E5) 这是我尝试执行的代码: Sub Consecutive_HigherCells() Dim i, j As Integer For i = 32 to 10000 For j = 1 To 30 I
Sub Consecutive_HigherCells()
Dim i, j As Integer
For i = 32 to 10000
For j = 1 To 30
If Cells (i,5).Value > Cells(i-j,5).Value Then
Cells(i, 5).Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End If
Next j
Next i
End Sub
实际上,代码不起作用,因为从E32到E1000的所有单元格,至少高于30个前置单元格中的一个,在我运行它时,都会着色
我真的需要你的帮助
Option explicit
Sub Consecutive_HigherCells()
Const LIMIT as long = 30
Dim i as long, j as long, Counter as long
For i = 32 to 10000
Counter = 0
For j = LIMIT to 1 step -1
If cells(i-j-1,"E").Value2 > cells(i-j,"E").value2 Then
Counter = counter + 1
Else
Exit for
End if
Next j
If counter = LIMIT then cells(i,"E").interior.color = rgb(255,255,0)
Next i
End Sub
未经测试且在手机上编写,抱歉格式错误
未经测试且在手机上编写,很抱歉格式不正确。下面的代码将在您的完整列表和彩色单元格中运行,其中顺序中的下一个单元格的值较低
Sub HighlightCells30()
Dim lr As Long, i As Long, count As Long
count = 0
lr = ActiveSheet.Range("E" & Rows.count).End(xlUp).Row
For i = 5 To lr
count = count + 1
If Range("E" & i + 1).Value < Range("E" & i).Value Then
If i <> lr And count > 30 Then
Range("E" & i).Interior.Color = vbYellow
count = 0
End If
End If
Next i
End Sub
Sub-HighlightCells30()
暗lr一样长,我一样长,计数一样长
计数=0
lr=ActiveSheet.Range(“E”和Rows.count).End(xlUp).Row
对于i=5至lr
计数=计数+1
如果范围(“E”&i+1).值<范围(“E”&i).值,则
如果我lr和count>30,那么
范围(“E”和“i”).Interior.Color=vbYellow
计数=0
如果结束
如果结束
接下来我
端接头
我没有完全明白30人一组想要达到的目标是什么?
编辑:根据下面的Scotts解释更新代码下面的代码将在完整列表和彩色单元格中运行,其中顺序中的下一个单元格的值较低
Sub HighlightCells30()
Dim lr As Long, i As Long, count As Long
count = 0
lr = ActiveSheet.Range("E" & Rows.count).End(xlUp).Row
For i = 5 To lr
count = count + 1
If Range("E" & i + 1).Value < Range("E" & i).Value Then
If i <> lr And count > 30 Then
Range("E" & i).Interior.Color = vbYellow
count = 0
End If
End If
Next i
End Sub
Sub-HighlightCells30()
暗lr一样长,我一样长,计数一样长
计数=0
lr=ActiveSheet.Range(“E”和Rows.count).End(xlUp).Row
对于i=5至lr
计数=计数+1
如果范围(“E”&i+1).值<范围(“E”&i).值,则
如果我lr和count>30,那么
范围(“E”和“i”).Interior.Color=vbYellow
计数=0
如果结束
如果结束
接下来我
端接头
我没有完全明白30人一组想要达到的目标是什么?
编辑:根据下面的Scotts解释更新了代码@Chillin>谢谢你的帮助,你很接近了。我修改了你的代码,现在可以使用了
Option Explicit
Sub Consecutive_HigherCells30()
Const LIMIT As Long = 30
Dim i As Long, j As Long, Counter As Long
For i = 32 To 10000
Counter = 0
For j = LIMIT To 1 Step -1
'If Cells(i - j - 1, "E").Value > Cells(i - j, "E").Value Then
If Cells(i - j - 1, "E").Value < Cells(i - j, "E").Value Then
Counter = Counter + 1
Else
Exit For
End If
Next j
If Counter = LIMIT Then Cells(i - 1, "E").Interior.Color = RGB(255, 255, 0)
Next i
End Sub
选项显式
次连续\u高位单元格30()
当长度=30时的常数限值
昏暗的i一样长,j一样长,计数器一样长
对于i=32到10000
计数器=0
对于j=限制为1步-1
'如果单元格(i-j-1,“E”).值>单元格(i-j,“E”).值,则
如果单元格(i-j-1,“E”)值<单元格(i-j,“E”)值,则
计数器=计数器+1
其他的
退出
如果结束
下一个j
如果计数器=限制,则单元格(i-1,“E”).Interior.Color=RGB(255,255,0)
接下来我
端接头
@Chillin>谢谢你的帮助,你很接近。我修改了你的代码,现在可以使用了
Option Explicit
Sub Consecutive_HigherCells30()
Const LIMIT As Long = 30
Dim i As Long, j As Long, Counter As Long
For i = 32 To 10000
Counter = 0
For j = LIMIT To 1 Step -1
'If Cells(i - j - 1, "E").Value > Cells(i - j, "E").Value Then
If Cells(i - j - 1, "E").Value < Cells(i - j, "E").Value Then
Counter = Counter + 1
Else
Exit For
End If
Next j
If Counter = LIMIT Then Cells(i - 1, "E").Interior.Color = RGB(255, 255, 0)
Next i
End Sub
选项显式
次连续\u高位单元格30()
当长度=30时的常数限值
昏暗的i一样长,j一样长,计数器一样长
对于i=32到10000
计数器=0
对于j=限制为1步-1
'如果单元格(i-j-1,“E”).值>单元格(i-j,“E”).值,则
如果单元格(i-j-1,“E”)值<单元格(i-j,“E”)值,则
计数器=计数器+1
其他的
退出
如果结束
下一个j
如果计数器=限制,则单元格(i-1,“E”).Interior.Color=RGB(255,255,0)
接下来我
端接头
为什么不更新上一个问题?为什么不更新你的最后一个问题?OP希望一行中的30个数字大于上面的数字,而不仅仅是上面的数字。OP希望一行中的30个数字大于上面的数字,而不仅仅是上面的数字。