Vba 如何根据条件对单元格进行颜色编码

Vba 如何根据条件对单元格进行颜色编码,vba,excel,excel-2010,Vba,Excel,Excel 2010,我在excel中有如下数据 A B C D sam 9.8 sam 1 kev 0.1 kev 0.1 ashl 2 ashl 2 kris 5.5 kris 3 我尝试将代码B、D涂成颜色,如果为例如:A1=C1和B1=D1,则将颜色B1、D1涂成绿色或橙色。我尝试使用以下公式,根据E列中的“真”或“假”得到0或1。由于我的范围将动态变化,我如何在VBA中进行颜色编码 =IF(AND(A1=D1,B1=E1),0,1) 按

我在excel中有如下数据

  A   B     C     D
sam  9.8    sam   1
kev  0.1    kev   0.1
ashl 2      ashl  2
kris 5.5    kris  3
我尝试将代码B、D涂成颜色,如果为例如:A1=C1和B1=D1,则将颜色B1、D1涂成绿色或橙色。我尝试使用以下公式,根据E列中的“真”或“假”得到0或1。由于我的范围将动态变化,我如何在VBA中进行颜色编码

=IF(AND(A1=D1,B1=E1),0,1)

按Alt+F11。这会将您带到希望放置VBA代码的位置。按Insert,然后插入模块。打开模块

键入以下内容:

Option Explicit 'not necessary but good practice to make sure you define all variables

Public Sub highlightCells()

    Dim i As Long
    Dim sht As Worksheet
    Set sht = ThisWorkbook.Worksheets("Sheet1")
    Dim lastrow As Long

    'finds your last row, helps keep it dynamic
    lastrow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

    For i = 1 To lastrow
        If (Cells(i, 1).Value = Cells(i, 3).Value) And (Cells(i, 2).Value = Cells(i, 4).Value) Then
            Cells(i, 2).Interior.Color = RGB(178, 255, 102) 'green
            Cells(i, 4).Interior.Color = RGB(178, 255, 102)
        Else
            Cells(i, 2).Interior.Color = RGB(255, 178, 102) 'orange
            Cells(i, 4).Interior.Color = RGB(255, 178, 102)
        End If
    Next i

End Sub
然后,当光标位于“公共子对象”和“结束子对象”之间时,按F5。这将运行代码,因此您可以确保它是您正在寻找的。接下来,我将解释如何使它成为您工作表上的一个按钮

转到excel电子表格。在“开发人员”选项卡中,转到“插入”,在“活动X”下单击“命令”按钮。将CommandButton绘制到图纸上任何需要的位置。双击刚才绘制的按钮。在自动显示的代码中,键入

Module1.highlightCells
返回Excel工作表,在“开发人员”选项卡中,单击“设计模式”。这将启用/禁用设计模式,允许您使用现在应该可以工作的按钮


另外,请记住,我跳过了一些被认为是“良好实践”的事情,比如重命名对象等等。如果你也需要帮助,请告诉我。还有一件事,我选择了我们自己使用的绿色和橙色的类型,但如果您想更改它,可以使用此处的RGB(红色、绿色、蓝色)代码:

按Alt+F11。这会将您带到希望放置VBA代码的位置。按Insert,然后插入模块。打开模块

键入以下内容:

Option Explicit 'not necessary but good practice to make sure you define all variables

Public Sub highlightCells()

    Dim i As Long
    Dim sht As Worksheet
    Set sht = ThisWorkbook.Worksheets("Sheet1")
    Dim lastrow As Long

    'finds your last row, helps keep it dynamic
    lastrow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

    For i = 1 To lastrow
        If (Cells(i, 1).Value = Cells(i, 3).Value) And (Cells(i, 2).Value = Cells(i, 4).Value) Then
            Cells(i, 2).Interior.Color = RGB(178, 255, 102) 'green
            Cells(i, 4).Interior.Color = RGB(178, 255, 102)
        Else
            Cells(i, 2).Interior.Color = RGB(255, 178, 102) 'orange
            Cells(i, 4).Interior.Color = RGB(255, 178, 102)
        End If
    Next i

End Sub
然后,当光标位于“公共子对象”和“结束子对象”之间时,按F5。这将运行代码,因此您可以确保它是您正在寻找的。接下来,我将解释如何使它成为您工作表上的一个按钮

转到excel电子表格。在“开发人员”选项卡中,转到“插入”,在“活动X”下单击“命令”按钮。将CommandButton绘制到图纸上任何需要的位置。双击刚才绘制的按钮。在自动显示的代码中,键入

Module1.highlightCells
返回Excel工作表,在“开发人员”选项卡中,单击“设计模式”。这将启用/禁用设计模式,允许您使用现在应该可以工作的按钮


另外,请记住,我跳过了一些被认为是“良好实践”的事情,比如重命名对象等等。如果你也需要帮助,请告诉我。还有一件事,我选择了我们自己使用的绿色和橙色的类型,但是如果你想改变它,你可以使用这里的RGB(红色、绿色、蓝色)代码:

你可以用普通条件公式本身来做。执行以下步骤

  • 单击D,选择D列
  • 然后单击B,选择B列
  • 确保当前单元格或默认值为B1
  • 单击条件格式选项,在其中选择“管理规则”
  • 在“条件格式规则管理”窗口中,单击“新建规则”按钮
  • 在“新格式规则”窗口中。选择“使用公式”以确定要格式化的单元格
  • 在该公式为真的格式值编辑框中输入=或($D1$B1,$A1$C1)
  • 选择橙色并单击“确定”
  • 使用=和($D1=$B1,$A1=$C1)公式和绿色执行步骤到5到8
  • 步骤3非常关键,一旦您确保将被视为相对单元,并且它将适用于所有单元

  • 您可以使用普通条件公式本身执行此操作。执行以下步骤

  • 单击D,选择D列
  • 然后单击B,选择B列
  • 确保当前单元格或默认值为B1
  • 单击条件格式选项,在其中选择“管理规则”
  • 在“条件格式规则管理”窗口中,单击“新建规则”按钮
  • 在“新格式规则”窗口中。选择“使用公式”以确定要格式化的单元格
  • 在该公式为真的格式值编辑框中输入=或($D1$B1,$A1$C1)
  • 选择橙色并单击“确定”
  • 使用=和($D1=$B1,$A1=$C1)公式和绿色执行步骤到5到8
  • 步骤3非常关键,一旦您确保将被视为相对单元,并且它将适用于所有单元

  • 也许您应该使用条件格式规则
    =和($A1=$D1,$B1=$E1)
    ,将应用范围选择为
    A1:D*在此处插入数字*
    @TimWilkinson我打算提出类似建议,但这是否适用于Excel 2010,因为OP在标记中列出了这一点?这说明此功能仅在Excel 2013/16中可用。@Clusks是的,它在2010年有效,在2007年也有效。从未拥有2003进行测试。@Tim
    A1:D*在此处插入数字*
    D范围将在此处动态更改。如何指定您应使用条件格式规则发布此内容的数字提示
    =和($A1=$D1,$B1=$E1)
    ,选择应用范围为
    A1:D*此处插入数字*
    @TimWilkinson我打算提出类似建议,但这是否适用于Excel 2010,因为OP在标签中列出了这一点?这说明此功能仅在Excel 2013/16中可用。@Clusks是的,它在2010年有效,在2007年也有效。从未测试过。@Tim
    A1:D*在此处插入数字*
    D范围将在此处动态更改。如何指定该数字