【问题标题】:Using an array based formula in conditional formatting在条件格式中使用基于数组的公式
【发布时间】:2017-03-28 23:10:08
【问题描述】:

我试图用 excel 做的有点不合常规,但我需要一种方法来清理人们导入到 TechExcel 的 DevTrack 中的数据。如果您尝试导入的内容与项目中已有的内容不是 100% 准确,DevTrack 会为字段创建值,从而导致格式略有不同的重复值。

我得到的是一个“验证器”excel表;人们复制/粘贴他们想要导入的内容,并且突出显示与数据验证表不匹配的任何内容。

数据验证本身不起作用,因为复制/粘贴会覆盖它,并且手动输入数据是浪费时间。

我已经设法让条件格式部分使用这个公式工作: =ISERROR(MATCH(C5,D:D,0))

但是它不区分大小写。我需要区分大小写。

所以我设法创建了另一个公式,如果不匹配则显示为真,但确切要求它是一个似乎不适用于条件格式的数组公式。

因此,如果使用 ctrl+shift+enter 将其输入到单元格中,则此方法有效,但不适用于条件规则。 {=ISERROR(MATCH(TRUE,EXACT(C5,D:D),0))}

这是我正在寻找的测试的简化版本。当没有大小写匹配时,该公式为真,但我无法使用 ctrl+shift+enter 以条件格式输入它。如果这如我所愿,小写的“瓜”将突出显示红色。

有没有办法让这个工作,或者有没有其他方法可以做到这一点?

如果重要的话,我在 Office 365 中使用的是最新版本的 excel。

【问题讨论】:

    标签: excel excel-formula conditional-formatting


    【解决方案1】:

    使用在没有 CSE 的情况下产生数组处理的函数。例如 SUMPRODUCT 或 AGGREGATE(等等)。

    'to show TRUE for case-sensitive matches
    =SIGN(AGGREGATE(15, 6, ROW($D$5:$D$9999)/EXACT($C5, $D$5:$D999), 1))
    'to show TRUE on no case-sensitive match
    =ISERROR(AGGREGATE(15, 6, ROW($D$5:$D$9999)/EXACT($C5, $D$5:$D999), 1))
    

    SIGN 包装器是不必要的,但对我来说,它是一个视觉提醒,我正在寻找一个布尔值。

    您不能在 CFR 中使用 D5:INDEX(D:D, MATCH("zzz", D:D)) 等动态范围,并且您确实希望在 AGGREGATE 中使用完整的列引用(或 SUMPRODUCT),所以我选择了 $D$5:$D$9999。

    【讨论】:

    • 顺便说一句,我认为所有命名范围和 CFR 公式都被处理为数组公式(没有 CSE),我是正确的。您只是不想在 =ISERROR(MATCH(TRUE,EXACT(C5,D:D),0)) 中使用完整的列引用;该公式适用于 CFR。
    • 是的!得到这个工作,感谢吉普德的快速反应。
    • 旁注,如果其他人最终使用它并最终将其应用于整个列,我制定了另一条规则,如果单元格为空白,未设置格式,则在规则管理器。这会增加空白单元格。
    猜你喜欢
    • 2013-01-13
    • 2017-01-20
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多