【问题标题】:Conditional Formatting Code Crashing Program条件格式代码崩溃程序
【发布时间】:2026-01-19 07:15:01
【问题描述】:

我有以下公式作为单元格块的条件:

=COUNTIF(A:O, A3) = 2
=COUNTIF(A:O, A3) > 2

当我将条件复制到 (A:O, 3:28) 区域的更多单元格中时,程序变得越来越慢,最终停止响应。这是条件的结果,还是其他原因,有没有办法简化代码以防止程序崩溃?

【问题讨论】:

  • 当您说“(A:O, 3:28)”时,您是指 A 列到 O 列(所有行)和第 3 行到第 28 行(所有列)的并集吗?还是您的意思是 A3:O28?
  • @Jaycal:我的意思是 (A:O U 3:28),所以整个街区。
  • @pnuts:我现在的代码正在减慢程序的速度,因此我需要限制代码的范围或以某种方式对其进行缩写以使其更高效。 Andy G 在下面提出了一个很好的观点;这可能是没有行边界的影响。

标签: excel conditional-formatting countif excel-2013


【解决方案1】:

我假设您打算在列 A 到 O 中明确查看,因此您应该使用美元符号来修复引用:

=COUNTIF($A:$O,A3) = 2
=COUNTIF($A:$O,A3) > 2

如果没有这些,它将从当前列开始检查,向右 14 列。

添加如果您的具有条件格式的范围可以限制在特定区域,那么假设您首先突出显示区域 A3:O50,那么:

=COUNTIF($A$3:$O$50,A3) = 2
=COUNTIF($A$3:$O$50,A3) > 2

【讨论】:

  • 你真的需要计算整个列吗? A1:O20000 呢?不过,我意识到 Excel 足够聪明,可以意识到大多数列的单元格都是空的。
  • 这很好;我没有意识到该公式会检查整个列。我只需要前 30 行左右。如何限制公式中的区域?
  • 另外,为了解决答案的第一部分,我确实需要检查每一列。这是为了比较对象标识符列表。如果对象 id 出现一次,它有一个状态,两次不同的状态,第三次表示它的事务完成。我们需要找出哪些对象处于哪种状态。
  • 我已添加到我的答案中。
  • 谢谢,非常感谢!
最近更新 更多