【问题标题】:Conditional formating not updating area of application in table(list object)条件格式不更新表中的应用程序区域(列表对象)
【发布时间】:2019-01-15 13:45:42
【问题描述】:

嗯,我发现了一些奇怪的东西,我现在有点震惊。

我有几个 Excel 文件,通常我们使用表格来存储数据(表格我的意思是 ListObjects)并且我们应用条件格式规则,因此当向表格中插入新行时,条件格式规则会立即扩展:

如果我在此表中插入新行,我的条件格式规则会立即应用于新行。

正如您在第二张图片中看到的那样,由于我们的条件格式规则,已插入新行并立即变为红色。这很完美。

现在我有了另一个包含不同信息的文件,但想法相同。表格、数据和条件格式。

数据只是发票列表(抱歉,出于隐私考虑,我不得不删除增值税号和公司名称)。 C 列是一个 VLOOKUP 公式,结合了一个 IFERROR。它搜索公司名称(公司名称在 D 列中),如果找到,它会返回增值税号。如果不是,则返回值No encontrado。该公式完美运行。

现在,我创建了一个条件格式规则,如果 C 列中的值为 No encontrado,它将以黄色突出显示行中的所有单元格。这条规则也很完美。我们已经用过上千次了。

现在是奇怪的部分。如果我插入新行并且小计行在表中未处于活动状态,则我的条件格式规则 Instantlt 适用于新行。这太完美了!

如上图所示,新行是黄色的,因为公式找不到任何内容,因为公司单元格为空白。这是完美的,效果很好。

现在是奇怪的部分,我不知道如何解决。如果我们插入一个新行但表格的小计行是活动的,那么条件格式规则适用于新行!

如上图所示,最后一行显示值No encontrado,但条件格式规则不适用。所以我必须手动更新条件格式规则的应用区域。

让我们回到我在这个问题的前 2 张图片中显示的第一个文件。如果您检查第二个图像,小计行处于活动状态,但条件格式规则会更新应用程序区域。

所以我的问题是。为什么在第二个文件中,如果我插入一个小计行处于活动状态的新行,我的条件格式规则不会更新应用程序区域?

我知道的不是问题:

  • 这两个文件都是 xlsx,因此没有宏或 VBA 受到影响。
  • 这两个文件都是使用相同版本的 Excel 和同一台 PC 创建的。

我尝试过的事情:

  • 从零开始重新创建文件。它没有解决任何问题。

提前致谢。如果您需要更多信息,请随时询问。

更新:嗯,我做了一些研究并发现了一些东西。它看起来像数据验证列表块条件格式自动扩展。在 D 列(公司名称)中,我创建了一个数据验证下拉列表。用户选择公司。此数据验证阻止条件格式更新应用程序区域。如果我禁用该列中的数据验证,则 CF 规则可以完美运行,即使小计行处于活动状态。

知道如何处理这个错误吗?我知道我可以用 VBA 修复它,但我试图找到没有 VBA 的解决方案。我希望文件是 XLSX。此外,在这家公司,他们从不更新软件,因此解决方案必须适用于 Excel 2007。

更新 #2: 我的 CF 规则只检查 C 列中是否出现值 No encontrado。如果找到,它会以黄色突出显示表格该行中的所有单元格:

我使用的公式是:=IF($C11="No encontrado";TRUE;FALSE)

此 CF 规则适用于所有表(现在是范围 =$A$11:$K$609

C列的公式是:

=IFERROR(VLOOKUP([PROVEEDOR];T_PROVEEDORES;2;FALSE);"No encontrado")。它在另一个名为T_PROVEEDORES 的表中搜索单元格D 中的值。如果没有找到,则返回No encontrado

在 D 列中只是一个具有不同公司名称的下拉列表。

此外,在 D 列中,我得到了公司的数据验证下拉列表。 提前致谢。

更新 #3:我已将示例文件上传到我的 GD。我删除了所有隐私信息并使用了通用名称。

Download file

在示例文件工作表 COMPRAS 中,有一个表。如果您使用 TAB 键插入新行并且小计行未激活,则新行将以黄色突出显示,这就是它应该工作的方式。

但是,如果您激活小计行,那么它现在可以工作了。 CF 规则不更新应用领域。

【问题讨论】:

  • 用新的信息研究更新了问题
  • 能否请您出示您的条件格式规则?我只是复制了您的案例,没有任何问题。
  • @Bad_Neighbor 抱歉,我会立即使用该信息更新问题。
  • 谢谢。我能想到两件事:一是你的 CF 的顶级范围。它是否从第一行数据开始?其次是您的格式规则。尝试“仅格式化包含的单元格”(第二个选项)并将您的规则设置为“单元格值”和“等于”和“不包含”(您需要引号来封装字符串)
  • @Bad_Neighbor 是的,它从第一行数据开始。关于您提出的规则,该规则将仅突出显示 C 列中的单元格,并且我们希望突出显示同一行中的所有单元格。我们不能使用该 CF 规则,但感谢您的建议。

标签: excel excel-2007 conditional-formatting


【解决方案1】:

好消息和坏消息。

坏消息是,这实际上是 Excel 2007 中的一个问题,已在更高版本中得到修复。

好消息是有一个答案,只是不是最干净的。使条件格式的范围包括整个工作表:

问题是条件格式范围不会随着新行继续扩展。如果以这种方式设置范围,它将强制 Excel 设置您的格式,因为范围包括所有可能的行。我的示例仅显示黄色行。重复我对其他三个条件所做的操作。

【讨论】:

  • 这实际上是 Excel 2007 中的一个问题 OMG!感谢您的回答。您是否有任何关于此问题的文档或网络资源?我很乐意与我的客户(其中大多数是老恐龙)分享它。感谢您的努力。
  • 不幸的是,我找不到任何文档,但将我在网上找到的一些想法拼凑在一起。进行了一些挖掘,但很高兴它在堆栈溢出时安全:) 很高兴为您提供帮助!顺便说一句,这个问题在 2016 年得到了解决。我在两个版本中都进行了测试。
猜你喜欢
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多