使用VBA进行条件格式化

时间:2016-12-09 23:28:46

标签: excel vba excel-vba

我需要一些帮助才能编写一些VBA代码。 如果列A中的位置编号匹配,我想将条件格式应用于表。

以下是我的表格示例:

+-----------------+------+-------+
| Location Number | Year | Value |
+-----------------+------+-------+
|               1 | 2015 | 1.1   |
|               1 | 2016 | 2.3   |
|               2 | 2015 | 2.8   |
|               2 | 2016 | 3.2   |
|               3 | 2015 | 7.8   |
|               3 | 2016 | 3.7   |
+-----------------+------+-------+

我想要做的是将条件格式应用于此表,以便IF位置编号匹配,然后比较2015年和2016年的值。

条件格式非常简单:

如果2016年大于2015年,请将值改为红色。

如果2016年小于2015年,请将电池调为绿色。

1 个答案:

答案 0 :(得分:1)

以下宏如何:

Sub ColorYear()

Dim long1 As Long
Dim rng As Range

Set rng = ActiveSheet.Range("A:A")
long1 = Application.WorksheetFunction.CountA(rng)

For t = 2 To long1
If ActiveSheet.Range("A" & t).Value = ActiveSheet.Range("A" & t - 1).Value Then
    If ActiveSheet.Range("C" & t).Value < ActiveSheet.Range("C" & t - 1).Value Then
    ActiveSheet.Range("C" & t).Interior.Color = RGB(0, 255, 0)
    ElseIf ActiveSheet.Range("C" & t).Value > ActiveSheet.Range("C" & t - 1).Value Then
    ActiveSheet.Range("C" & t).Interior.Color = RGB(255, 0, 0)
    End If

    If ActiveSheet.Range("D" & t).Value < ActiveSheet.Range("D" & t - 1).Value Then
    ActiveSheet.Range("D" & t).Interior.Color = RGB(0, 255, 0)
    ElseIf ActiveSheet.Range("D" & t).Value > ActiveSheet.Range("D" & t - 1).Value Then
    ActiveSheet.Range("D" & t).Interior.Color = RGB(255, 0, 0)
    End If
End If

Next t

End Sub

结果:

enter image description here

如果要使用箭头,可以使用以下代码:

Sub Arrow()

Dim long1 As Long
Dim rng As Range

Set rng = ActiveSheet.Range("A:A")
long1 = Application.WorksheetFunction.CountA(rng)

For t = 2 To long1
If ActiveSheet.Range("A" & t).Value = ActiveSheet.Range("A" & t - 1).Value Then

If ActiveSheet.Range("C" & t).Value < ActiveSheet.Range("C" & t - 1).Value Then
ActiveSheet.Range("D" & t).Value = ChrW(9660)
ActiveSheet.Range("D" & t).Font.Color = RGB(42, 154, 68)
ElseIf ActiveSheet.Range("C" & t).Value > ActiveSheet.Range("C" & t - 1).Value Then
ActiveSheet.Range("D" & t).Value = ChrW(9650)
ActiveSheet.Range("D" & t).Font.Color = RGB(229, 35, 35)
End If

End If

Next t

End Sub

请注意,此代码将覆盖D列中的值,因此请确保您不在D列中存储任何值!