Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 为一系列递增单元格的最后一个单元格着色_Excel_Vba - Fatal编程技术网

Excel 为一系列递增单元格的最后一个单元格着色

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

我正在尝试创建一个宏,使单元格的颜色高于上一个。我只想给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

    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个数字大于上面的数字,而不仅仅是上面的数字。