我对VBA很陌生,大多数时候,我要么在这里找到一个代码,要么记录一个宏,然后根据我的需要修改它。这一次我找不到合适的代码来修改,所以我需要你的帮助。
假设我下面有一张桌子;
A B C
Account Name Surname
1 111 AA BB
2 111 AA BB
3 111 AA BB
4 222 CC DD
5 333 EE FF
6 333 EE FF我想用不同的颜色填满整排。如果“帐户”列包含相同的值,则为表的2种颜色。例如,在这里,第1-2-3行将为红色,第4行将为绿色,第5-6行将再次为红色。当宏到达最后一个单元格时,它将停止。
我试图修改条件格式代码,但是我无法管理它。它们通常根据某些标准对列中的单元格进行工作。
任何帮助都将不胜感激。
事先非常感谢!
发布于 2018-06-19 12:56:10
一个简单的如果-然后的陈述似乎是你所需要的。尝试遵循以下代码所做的操作:
Sub ColorCode()
Dim thisAccount, lastAccount As String
Dim NumRows, colorValue As Integer
Dim isFirstRow As Boolean
NumRows = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
lastAccount = ""
isFirstRow = True
With Sheets("Sheet1")
For i = 1 To NumRows
thisAccount = .Range("A" & i).Value
If isFirstRow = False Then
If thisAccount <> lastAccount Then
If .Range("A" & i - 1).Interior.ColorIndex = 3
.Range("A" & i).EntireRow.Interior.ColorIndex = 4
Else
.Range("A" & i).EntireRow.Interior.ColorIndex = 3
End If
Else
colorValue = .Range("A" & i - 1).Interior.ColorIndex
.Range("A" & i).EntireRow.Interior.ColorIndex = colorValue
End If
Else
.Range("A" & i).EntireRow.Interior.ColorIndex = 3
End If
lastAccount = .Range("A" & i).Value
isFirstRow = False
Next
End With
End Sub与前面的答案相反,这应该是通过使用初始if -语句来解释第一行,并询问它是否是第一行,而且由于我们后来更改了它的值,所以它将运行的唯一时间是在第一行。
简单地说,我循环遍历数据中的总行数,询问它帐户号是否与前一个相同,如果是,我对它们进行相同的颜色编码,如果不是,我对它们进行不同的颜色编码。我只是用一些捏造的数据自己运行了这个程序,而且似乎运行得很完美。
快乐的编码,下一次尝试问一个更具体的代码问题!
发布于 2018-06-19 12:16:21
在这里,条件格式仍然是可行的。
我必须指出,您的着色逻辑(“相对于A行中的previos单元格的颜色行”)不适用于第一行,因此必须失败。
如果您绝对需要使用VBA,这是您想要遵循的逻辑路径:
如果您在编码方面需要帮助,请用您迄今尝试过的内容更新您的问题。
https://stackoverflow.com/questions/50927904
复制相似问题