根据列中的多个值格式化行

Format rows based on multiple values in a column

我是 VBA 的新手,大多数时候,我要么在这里找到代码,要么录制一个宏,然后根据需要进行更改。这次我找不到合适的代码来更改,所以我需要你的帮助。

假设我有一个 table 如下;

      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

如果 "Account" 列包含相同的值,我想用不同的颜色填充整行(即 2 种颜色,如 table 格式)。例如,在这里,第 1-2-3 行将为红色,第 4 行将为绿色,第 5-6 行将再次为红色。当宏到达最后一个单元格时它将停止。

我试图修改条件格式代码,但是我做不到。他们通常根据某些标准处理列中的单元格。

任何帮助将不胜感激。

非常感谢!

这里仍然是条件格式。

我必须指出,您的着色逻辑 ("color row in respect to previos cell in row A") 不适用于第一行,因此必须失败。

如果您绝对需要使用 VBA,这是您要遵循的逻辑路径:

  1. 将 A 列设置为范围
  2. 对于此范围内的每个单元格,将此单元格与前一个单元格进行比较(同样,第 1 行在这里不起作用)
  3. 根据此比较为行着色

如果您在编码方面需要帮助,请使用您目前尝试过的内容更新您的问题。

一个简单的 If-Then 语句似乎就是您所需要的。尝试按照以下代码执行以下操作:

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 语句询问它是否是第一行来说明第一行,并且因为我们稍后更改它的值,所以它唯一一次 运行 在第一行。

简单的说,我循环遍历数据的总行数,问它账号和上一个是不是一样,如果是,我用相同的颜色标示,如果不是,我用不同的颜色对它们进行编码。我只是运行自己用一些虚构的数据做的,看起来效果很好。

编码愉快,下次尝试提出更具体的代码问题!

这也可以在不使用 VBA 的情况下完成。

我们可以偷偷摸摸地使用 RANKMOD 来识别 "alternating groups",因为条件格式适用于 returns 只有 TRUE 的任何公式/FALSE.

使用您的示例数据(根据标题调整行号除外):


说明:

  1. SelectA2:C2;将填充颜色设置为浅红色。 然后 A2:C2 仍然被选中:
  2. 主页(功能区菜单)> 条件格式 > 新规则...
  3. 选择使用公式确定要设置格式的单元格
  4. 选择为该值为真的单元格设置格式并输入公式:
    =MOD(RANK($A2,$A:$A,1),2)=1
  5. 单击 格式 > 填充(选项卡)> 浅绿色 > 确定 > 确定
  6. Ctrl+C复制(同时还在A2:C2
  7. Select A2:C7选择性粘贴 > 格式