Excel 2013 VBA 需要用多个条件突出显示的宏

Excel 2013 VBA Macro Needed for Highlighting with Multiple Conditionals

我需要帮助编写一个 Excel 宏,它可以做很多事情。我的贡献是将数据转换成这种格式的宏,但我一直坚持突出显示,甚至不知道如何进行。抱歉,这太长了,提前致谢! :D

我遇到的问题是,如果 A 列中有重复的名称,我需要为该最终用户使用 D 列中所有总计的总和来查找突出显示颜色。

只有在E栏高亮显示“#N/A”,如果有多个公司但没有在E栏显示“#N/A”,则只有那些说“#N/A”的将包含在总数的 highlighting/adding 中……

  1. 如果A列有多个相同的公司名称,并且D列所有同一公司的总数加起来大于0,并且C列的订单号对于所有以“5”开头的公司(我一直在使用 =LEFT($C1,1)+0=5),AND 列 E =“#N/A”,然后突出显示 A:E 黄色。

  2. 如果A列有多个相同的公司名称,并且D列中所有同一公司的总数加起来大于0,但并非列中的所有订单号C 以“5”开头,AND 列 E =“#N/A”,然后订单号为“5”的 A:E 的单元格为蓝色(颜色 15773696),以及A:E 不以“5”开头的订单号为红色。

  3. 如果A列有多个相同公司名称,且D列所有同一公司的总数加起来为0,AND列E = "#N/A",然后用红色突出显示单元格 A:E。

  4. 如果 A 列有多个相同的公司名称,并且 D 列中所有同一公司的总数加起来 < 0,并且 E 列 = "#N/A", THEN 用橙色突出显示所有公司行的单元格 A:E(颜色 49407)。

  5. 如果 A 列只有一个公司名称,并且 C 列中的订单号以“5”开头,并且 D 列中的总数 > 0,并且 E 列 =“#N/A",然后用蓝色突出显示公司名称的单元格 A:E(颜色 15773696)。

  6. 如果 A 列只有一个公司名称,并且 D 列中的总数小于 0,并且 E 列 =“#N/A”,则突出显示单元格 A:E公司名称为橙色(颜色 49407)。

  7. 如果 A 列只有一个公司名称,并且 C 列中的订单号不以“5”开头,并且 D 列中的总数 >= 0,则突出显示单元格 A:E 为红色的公司名称。

  8. 如果该行为蓝色,则将文本 "Booking DER?" 插入 F 列。

非常感谢您的帮助! :) 我会 post 一张示例图片,但它不会让我...

你有两种选择,一种是使用条件格式,它更容易,但我认为需要更多时间

您还可以使用私有方法在值更改时更改单元格格式,为此您需要在 VBA、select 您想要的工作表上的工作表内创建代码使用左上角列表中的代码 select "View Code" 那是你必须编写代码的地方

但是要小心,因为您正在处理诸如“#N/A”之类的错误,因为如果您执行诸如

之类的事情

If Range("C2").value = "#N/A" then ...

它不会工作,因为“#N/A”不是单元格值它是一个错误指示器,所以你必须使用这样的东西:

If worksheetfunciton.IfError(Range("C2"),"Error") = "Error" then ...

在此示例中,如果确定范围内的单元格的值已更改,则 coe 将显示一条消息,告诉您此单元格已更改,您所要做的就是根据需要更改范围并更改行: MsgBox "Cell " & Target.Address & " has changed." 根据您的条件,这应该可行,一种突出显示单元格的方法可以是 cells().Interior.ColorIndex = "color number"

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.
    Set KeyCells = Range("A1:C10")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

        ' Display a message when one of the designated cells has been 
        ' changed.
        ' Place your code here.
        MsgBox "Cell " & Target.Address & " has changed."

    End If
End Sub