【问题标题】:Excel Formula: Conditional Format if additional values are presentExcel 公式:如果存在附加值,则为条件格式
【发布时间】:2014-02-28 15:34:30
【问题描述】:

这是我需要实现的目标:

如果单元格包含管理员或经过身份验证的用户以外的值,我想更改其格式。 如果它同时包含管理员和经过身份验证的用户,则格式不会更改。 但是,如果它包含异常,例如“Everyone”或“Backup Operators”,则会标记单元格。 基本上,如果单元格包含管理员或认证用户以外的任何内容,则单元格的格式会更改。

例子:

Administrator, Authenticated User           - Format Unchanged
Administrator                               - Format Unchanged
Authenticated User                          - Format Unchanged
Administrator, Authenticated User, Everyone - Format Changed
Everyone                                    - Format Changed

我尝试了多种方法来解决这个问题,但它们似乎不起作用。我使用公式来确定条件格式下的单元格格式。

=AND(NOT(ISERROR(SEARCH("Admin","CELL"))), NOT(ISERROR(SEARCH("Auth","CELL"))))

=NOT(OR(NOT(ISERROR(SEARCH("Admin",F132))), NOT(ISERROR(SEARCH("Auth",F132)))))

现在我被卡住了,我不知道如何继续。 任何帮助将不胜感激!

【问题讨论】:

  • 我认为他的意思是,它可以有一个或两个值,格式不应该改变。但是,如果它有任何其他内容,那么无论如何,它都应该改变。
  • 我也花了一秒钟 ;) 我进行了编辑,可能会更容易阅读
  • 大家好,感谢您的意见!我很感激帮助。 Ben 的回答最适合我的问题。

标签: excel logic conditional-statements formula conditional-formatting


【解决方案1】:

如果单元格包含,添加尽可能多的名称以突出显示,只需使用文本包含:

【讨论】:

    【解决方案2】:

    @user2140261 提供的解决方案效果很好。但是,如果您想要一个更动态的解决方案,您不必添加除“管理员”和“经过身份验证的用户”之外的所有可能性,那么您可以尝试这个公式

    =IF(LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"Administrator",""),"Authenticated User",""),", ",""),"ANOTHER NAME HERE", ""))>0,TRUE,FALSE)
    

    从内到外打破这个公式

    • 您使用SUBSTITUTE 将源单元格中出现的任何管理员替换为“”
    • 您使用SUBSTITUTE 将上述结果中出现的任何已验证用户替换为“”
    • 您使用SUBSTITUTE 将上述结果中出现的任何“,”替换为“”
    • 您使用LEN 来测试上述结果的长度,如果它大于 0,则单元格中存在管理员或认证用户以外的内容。

    这会导致

    Administrator, Authenticated User              FALSE
    Authenticated User                             FALSE
    Authenticated User, Administrator              FALSE
    Authenticated User, Administrator, Everyone    TRUE
    Everyone                                       TRUE
    

    当它为真时,意味着格式需要改变。

    编辑 考虑到您现在想要添加/删除更多值并能够轻松自定义它,执行 UDF 可能是最简单的:

    Public Function SUBSTITUTEARRAY(ByVal Source As Range, ByVal Substitute As Range) As String
    
        Dim c       As Range
        Dim rtn     As String
    
        rtn = Source.Value
    
        For Each c In Substitute.Cells
            rtn = Application.WorksheetFunction.Substitute(rtn, c.Value, "")
        Next c
    
        SUBSTITUTEARRAY = rtn
    
    End Function
    

    您将调用:=SUBSTITUTEARRAY(A1, F1:F5) 其中 A 是您要检查的源单元格,F1:F5 包含您要检查的值(“管理员”、“经过身份验证的用户”等...)

    它将返回TRUEFALSE,具体取决于单元格中是否还有其他值。

    【讨论】:

    • 嗨,Ben,如果我需要添加的用户不仅仅是管理员和经过身份验证的用户,该怎么办?我一直在尝试添加另一个嵌套替换,但它似乎不起作用。
    • 您可以使用第一个 SUBSTITUTE 函数作为 [text] 参数将其添加到 LEN 函数的内部。我已经更新了我的答案给你一个想法。这也让我想知道是否有办法通过一个替代函数和使用数组公式来做到这一点。
    • 好的,所以我用数组公式研究了这种可能性。从我的研究来看,SUBSTITUTE 似乎不适用于数组。但是,如果您想编写自己的用户定义函数,这可能会简化添加/删除名称的操作。
    • 嗨,本,您的回答非常有见地!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2014-09-08
    相关资源
    最近更新 更多