我需要一些帮助才能编写一些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年,请将电池调为绿色。
答案 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
结果:
如果要使用箭头,可以使用以下代码:
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列中存储任何值!