条件格式不更新 table(列表对象)中的应用程序区域

Conditional formating not updating area of application in table(list object)

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

我有几个 Excel 文件,通常我们使用 tables 来存储数据(tables 我的意思是 ListObjects)并且我们应用条件格式规则,所以当一个新的行插入table,条件格式规则立即展开:

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

正如您在第二张图片中看到的,插入了一个新行,并且由于我们的条件格式规则,它变成了红色 instantlt。这很完美。

现在我有另一个包含不同信息的文件,但它的想法是一样的。 Table,数据和条件格式。

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

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

奇怪的部分来了。如果我插入一个新行并且小计行在 table 中未激活,我的条件格式规则 instantlt 适用于新行。这太完美了!

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

奇怪的部分来了,我不知道如何找到解决方案。如果我们插入一个新行 但 table 的小计行处于活动状态 那么,条件格式规则 不会 适用于新行!

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

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

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

我知道的不是问题:

我尝试过的事情:

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

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

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

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

该行中的所有单元格

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

此 CF 规则适用于所有 table(现在是范围 =$A:$K9

C列的公式为:

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

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

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

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

Download file

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

但是,如果您在小计行处于活动状态时执行相同的操作,那么它现在就可以工作了。 CF规则不更新应用领域。

好消息和坏消息。

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

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

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