当a列和B列中相邻单元格的值之和为5时,如何将C列中的单元格自动着色?(Excel VBA)

当a列和B列中相邻单元格的值之和为5时,如何将C列中的单元格自动着色?(Excel VBA),excel,vba,Excel,Vba,在A列和B列中,将手动输入数字。C列自动给出总和 我想在excel VBA中编写以下程序: C列中单元格的颜色根据输入的颜色而变化 A和B中的数字: 当单元格A和B之和小于5时:红色 当A和B中的值之和至少为5且单元格B中的值至少为2时:绿色 我想使用offset,但我不知道如何使用,或者这是否是正确的命令 提前非常感谢,我是excel vba新手,不知道如何编程,这将有助于我深入了解这种编程语言 使用通过VBA应用的条件格式或在工作表的“主页”选项卡上手动应用的条件格式 Option Ex

在A列和B列中,将手动输入数字。C列自动给出总和

我想在excel VBA中编写以下程序:

C列中单元格的颜色根据输入的颜色而变化 A和B中的数字:

  • 当单元格A和B之和小于5时:红色
  • 当A和B中的值之和至少为5且单元格B中的值至少为2时:绿色
我想使用offset,但我不知道如何使用,或者这是否是正确的命令

提前非常感谢,我是excel vba新手,不知道如何编程,这将有助于我深入了解这种编程语言


使用通过VBA应用的条件格式或在工作表的“主页”选项卡上手动应用的条件格式

Option Explicit

Sub rgy()
    With Worksheets("sheet1")
        With .Range("C:C")
            With .FormatConditions
                .Delete
                With .Add(Type:=xlExpression, Formula1:="=AND(COUNT($A1:$B1)=2, SUM($A1:$B1)=0)")
                    .Interior.Color = vbRed
                End With
                With .Add(Type:=xlExpression, Formula1:="=AND(COUNT($A1:$B1)=2, SUM($A1:$B1)>=5)")
                    .Interior.Color = vbGreen
                End With
                With .Add(Type:=xlExpression, Formula1:="=AND(COUNT($A1:$B1)=2, SUM($A1:$B1)>0, SUM($A1:$B1)<5)")
                    .Interior.Color = vbYellow
                End With
            End With
        End With
    End With
End Sub
选项显式
亚rgy()
带工作表(“表1”)
带.范围(“C:C”)
带.格式化条件
.删除
With.Add(Type:=xlExpression,Formula1:=“=AND(COUNT($A1:$B1)=2,SUM($A1:$B1)=0)”)
.Interior.Color=vbRed
以
With.Add(Type:=xlExpression,Formula1:=“=AND(COUNT($A1:$B1)=2,SUM($A1:$B1)>=5)”)
.Interior.Color=vbGreen
以
使用.Add(Type:=xlExpression,Formula1:=”=和(COUNT($A1:$B1)=2,SUM($A1:$B1)>0,SUM($A1:$B1)尝试此宏

Dim cel As Range, lRow As Long
lRow = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
    For Each cel In Range("C2:C" & lRow)
        If cel.Value < "5" Then cel.Interior.Color = vbRed
        If cel.Value = "5" Or cel.Offset(, -1).Value >= "2" Then cel.Interior.Color = vbGreen
    Next cel
Dim cel As Range,lRow As Long
lRow=ActiveSheet.Cells(Rows.Count,3).End(xlUp).Row
对于范围内的每个cel(“C2:C”和lRow)
如果cel.Value<“5”,则cel.Interior.Color=vbRed
如果cel.Value=“5”或cel.Offset(,-1).Value>=“2”,则cel.Interior.Color=vbGreen
下一个细胞
您可以轻松使用条件格式设置,请尝试:

Option Explicit

 Sub Test()

    Dim LastRow As Long, i As Long

    With ThisWorkbook.Worksheets("Sheet1")
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 1 To LastRow
            If .Range("C" & i).Value < 5 Then
                .Range("C" & i).Interior.Color = vbRed
            ElseIf .Range("C" & i).Value >= 5 And .Range("B" & i).Value >= 2 Then
                .Range("C" & i).Interior.Color = vbGreen
            End If
        Next i
    End With

 End Sub
选项显式
子测试()
昏暗的最后一排一样长,我一样长
使用此工作簿。工作表(“表1”)
LastRow=.Cells(.Rows.Count,“A”).End(xlUp).Row
对于i=1到最后一行
如果.Range(“C”&i).值小于5,则
.Range(“C”和i).Interior.Color=vbRed
ElseIf.Range(“C”和i).Value>=5,And.Range(“B”和i).Value>=2,然后
.Range(“C”和i).Interior.Color=vbGreen
如果结束
接下来我
以
端接头

非VBA方法:

  • 选择单元格
    C2
    (要应用格式的第一个单元格)
  • 从主功能区中选择条件格式。
    • 选择新规则。
      • 选择“使用公式”以确定要格式化的单元格
      • 添加公式
        =SUM($A2:$B2)=5,$B2>=2)
        并将格式更改为绿色
      • 单击
        OK
  • 从主功能区中选择格式绘制程序并向下复制格式,或向下拖动单元格以向下复制
使用VBA:

当手动更新A:B列中的值时,此代码将更新C列中的字体颜色。如果希望根据公式更新单元格,则必须使用
工作表\u Calculate
并检查
A:B列中的每个值

Private Sub Worksheet_Change(ByVal Target As Range)

    'Check that a value is being changed in column A:B.
    If Not Intersect(Target, Columns(1).Resize(, 2)) Is Nothing Then
        With Target

            'Check both values are numbers.
            If IsNumeric(Cells(.Row, 1)) And IsNumeric(Cells(.Row, 2)) Then

                'Change colour based on numeric values.
                If Cells(.Row, 1) + Cells(.Row, 2) < 5 Then
                    Cells(.Row, 3).Font.Color = RGB(255, 0, 0)
                ElseIf Cells(.Row, 1) + Cells(.Row, 2) >= 5 And Cells(.Row, 2) >= 2 Then
                    Cells(.Row, 3).Font.Color = RGB(0, 255, 0)
                Else
                    Cells(.Row, 3).Font.Color = RGB(0, 0, 0)
                End If

            Else

                'If not numeric change font to black.
                Cells(.Row, 3).Font.Color = RGB(0, 0, 0)

            End If
        End With
    End If
End Sub
Private子工作表\u更改(ByVal目标作为范围)
'检查a:B列中的值是否正在更改。
如果不相交(目标,列(1)。调整大小(,2))则什么都不是
有目标
'检查两个值是否都是数字。
如果是数值型(单元格(.Row,1))和数值型(单元格(.Row,2)),则
'根据数值更改颜色。
如果单元格(.Row,1)+单元格(.Row,2)<5,则
单元格(.Row,3)。Font.Color=RGB(255,0,0)
其他单元格(.Row,1)+单元格(.Row,2)>=5和单元格(.Row,2)>=2
单元格(.Row,3)。Font.Color=RGB(0,255,0)
其他的
单元格(.Row,3).Font.Color=RGB(0,0,0)
如果结束
其他的
'如果不是数字,请将字体更改为黑色。
单元格(.Row,3).Font.Color=RGB(0,0,0)
如果结束
以
如果结束
端接头

您能分享到目前为止您尝试过的代码吗?这个问题似乎与您之前提出并回答过的问题有关。您有没有遇到过具体的问题?您是否尝试过使用条件格式?只是为了获得正确的逻辑?调整此问题中给出的代码:不幸的是,条件格式对我不起作用b因为覆盖的条件太多了。而且我想在不使用条件格式的情况下这样做。你知道什么是“条件格式”吗"意思是?这似乎是你在问题中描述的,但你随后说你不想要它…谢谢!没有条件格式也可以吗?不幸的是,这种条件格式对我不起作用-你知道另一种选择吗?这是要放在工作表hometab上吗?谢谢!!@emil7它可以放在工作表hometab中et,但它不一定是。如果它放在工作表中,您可以使用
工作表\u Change
,它将在工作表上的任何公式重新计算时运行代码;或者您可以使用
工作表\u Calculate
来计算范围。您可以在谷歌上查找并尝试实现它。@emil7我不明白您为什么不能使用con传统的格式,这将是一个更容易为您。