Excel 基于其他单元格值高亮显示单元格

Excel 基于其他单元格值高亮显示单元格,excel,vba,macos,Excel,Vba,Macos,我试图突出显示E列下的一个单元格,如果该单元格为空,而C列下的相应值为“人员”。下面的内容不适用于这样做。有人能帮我吗 Sub Personnel() 'Check for missing Personnel Information' Dim rRng As Range, rRng1 As Range, c lRow = Range("A" & Rows.Count).End(xlUp).row Set rRng = Range("C1:C" & lRow

我试图突出显示E列下的一个单元格,如果该单元格为空,而C列下的相应值为“人员”。下面的内容不适用于这样做。有人能帮我吗

Sub Personnel()
'Check for missing Personnel Information'
    Dim rRng As Range, rRng1 As Range, c
    lRow = Range("A" & Rows.Count).End(xlUp).row
    Set rRng = Range("C1:C" & lRow)
    Set rRng1 = Range("E1:E" & lRow)
      For Each cell In rRng
        If rRng.cell.Value = "Personnel" And rRng1.cell.Value = "" Then
        cell.Interior.ColorIndex = 6
        cell.AddComment "Mapping Info is missing"
        End If

    Next cell
End Sub
  • 您可以使用
    偏移量(行偏移量、列偏移量)
    从一个单元格导航到另一个单元格。由于您正在循环通过
    列C
    并希望检查
    列D
    中的一个值,即右边的两列,因此可以使用
    rCell.Offset(0,2)
  • 用工作表限定您的范围。我声明变量
    ws
    来执行此操作。您还可以将
    块一起使用
  • 不要使用
    单元格
    ,声明要用于循环的范围变量。这里我们使用
    rCell
    在范围
    rRng
  • 正确地缩进代码有助于提高可读性。这将使调试、将来更新和编写变得更容易
  • 您可以使用
    偏移量(行偏移量、列偏移量)
    从一个单元格导航到另一个单元格。由于您正在循环通过
    列C
    并希望检查
    列D
    中的一个值,即右边的两列,因此可以使用
    rCell.Offset(0,2)
  • 用工作表限定您的范围。我声明变量
    ws
    来执行此操作。您还可以将
    块一起使用
  • 不要使用
    单元格
    ,声明要用于循环的范围变量。这里我们使用
    rCell
    在范围
    rRng
  • 正确地缩进代码有助于提高可读性。这将使调试、将来更新和编写变得更容易

    我看到您已经创建了一个宏,名为“Personel”,用于执行此操作,这意味着您需要启动该宏才能完成此突出显示。在相当多的情况下,这意味着人们不知道这可以通过使用条件格式自动完成

    让我解释一下如何使用条件格式进行此操作:在条件格式页面中,选择“新建规则”,“选择公式”(假设您希望对单元格E2执行此操作),然后输入以下公式:

    =AND(ISBLANK(E2);C2="Personel")
    
    为什么这个公式,我如何知道它是正确的?非常简单:首先我在另一个单元格(不是E2)中输入这个公式,然后看看结果是否为“真”

    然后将此条件格式应用于所需电子列中的每个单元格,并将自动执行高亮显示,而无需启动宏


    如果您想继续使用VBA进行此操作,请告诉我,我将删除此答案。

    我看到您为此创建了一个名为“Personel”的宏,这意味着您需要启动该宏才能完成此突出显示。在相当多的情况下,这意味着人们不知道这可以通过使用条件格式自动完成

    让我解释一下如何使用条件格式进行此操作:在条件格式页面中,选择“新建规则”,“选择公式”(假设您希望对单元格E2执行此操作),然后输入以下公式:

    =AND(ISBLANK(E2);C2="Personel")
    
    为什么这个公式,我如何知道它是正确的?非常简单:首先我在另一个单元格(不是E2)中输入这个公式,然后看看结果是否为“真”

    然后将此条件格式应用于所需电子列中的每个单元格,并将自动执行高亮显示,而无需启动宏

    如果你想继续与VBA合作,请让我知道,我会删除这个答案