首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据列中的多个值格式化行

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

Stack Overflow用户
提问于 2018-06-19 11:59:41
回答 2查看 87关注 0票数 0

我对VBA很陌生,大多数时候,我要么在这里找到一个代码,要么记录一个宏,然后根据我的需要修改它。这一次我找不到合适的代码来修改,所以我需要你的帮助。

假设我下面有一张桌子;

代码语言:javascript
复制
      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行将再次为红色。当宏到达最后一个单元格时,它将停止。

我试图修改条件格式代码,但是我无法管理它。它们通常根据某些标准对列中的单元格进行工作。

任何帮助都将不胜感激。

事先非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-19 12:56:10

一个简单的如果-然后的陈述似乎是你所需要的。尝试遵循以下代码所做的操作:

代码语言:javascript
复制
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 -语句来解释第一行,并询问它是否是第一行,而且由于我们后来更改了它的值,所以它将运行的唯一时间是在第一行。

简单地说,我循环遍历数据中的总行数,询问它帐户号是否与前一个相同,如果是,我对它们进行相同的颜色编码,如果不是,我对它们进行不同的颜色编码。我只是用一些捏造的数据自己运行了这个程序,而且似乎运行得很完美。

快乐的编码,下一次尝试问一个更具体的代码问题!

票数 0
EN

Stack Overflow用户

发布于 2018-06-19 12:16:21

在这里,条件格式仍然是可行的。

我必须指出,您的着色逻辑(“相对于A行中的previos单元格的颜色行”)不适用于第一行,因此必须失败。

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50927904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档