Excel 通常将条件格式公式视为数组公式, 除了 从 Excel 2002/2003 XML 电子表格文件加载它们时。

这只是 Excel 2002/2003 XML 电子表格格式的问题...本机 Excel 格式可以正常工作,较新的 Excel 2007 XML 格式 (xlsx) 也可以正常工作。

加载电子表格后,可以通过选择格式化范围、转到“条件格式”对话框并单击“确定”来使其正常工作,但这只能解决会话的问题。

测试用例:

在新工作表中输入以下内容:

  A B C
1 N N N
2 x x x
3 x x x

在单元格 A1:C1 上创建此条件格式公式(您为格式选择漂亮的颜色):

=(SUM(($A1:$C1="N")*($A$2:$C$2=A$3))>0)

这是一个数组公式,每当 A1、B1 和 C1 中的任何一个具有“N”并且“N”下方的第 2 行中的单元格等于当前列的第 3 行中的单元格时,该公式就会激活。

(这是根据现实世界的商业电子表格进行简化的。对于测试用例的复杂性感到抱歉,我正在尝试找到一个更简单的测试用例在这里呈现。)

它有效...您可以按照您想要的任何方式更改 N 或 x,并且格式设置效果很好。

将其另存为 XML 电子表格。关闭 Excel,然后重新打开该文件。格式现在已损坏。现在,仅当 A1 为“N”并且 A2 与 A3、B3 或 C3 相同时,您才能激活条件格式。B1、B2、C1 和 C2 的值对格式没有影响。

现在,选择 A1:C1 并查看条件格式公式。和以前一模一样。点击“确定”。条件格式再次开始工作,并将在文件打开的整个会话期间工作。

考虑的解决方法:

  1. 提供本机 (BIFF) Excel 格式的文件。不是一种选择,这些电子表格是由网络服务器动态生成的,这只是我们的系统动态生成的数十种类型的工作簿之一。

  2. 提供 Excel 2007 本机 XML 格式 (xlsx) 的文件。不可能,当前的用户群没有 Office 2007 或兼容性插件。

  3. 要求用户选择范围,进入“条件格式”对话框,然后单击“确定”。对于不熟练的用户来说,在这种情况下不是一个选择。

  4. 要求用户打开 XML 电子表格、另存为本机 XLS、关闭并重新打开 XLS 文件。 这不行! 如果从 XML 文件加载损坏的原始 XLS 格式,则格式仍然损坏。如果在保存之前执行上述(3),XLS 文件将正常工作。

我最终重写了条件格式以不使用数组公式。所以我猜想这在某种程度上已经得到了“解答”,但它仍然是 Excel 2002/2003 处理 XML 文件中的一个未记录的、甚至是模糊的错误。

有帮助吗?

解决方案

我尝试重现您所描述的问题。这是我发现的。

  • 在保存作为XML电子表格时,可以使用Windows XP上的Excel 2003在Windows XP上始终如一地重新创建问题。

  • 可以 不是 作为标准XLS电子表格保存时,使用Windows XP上的Excel 2003在Windows XP上复制问题。

  • 可以 不是 在本机XLSX格式保存文件时,使用Windows Vista上的Excel 2007在Windows Vista上复制问题。

  • 可以 不是 在Excel 97-2003 XLS格式中保存文件时,使用Windows Vista上的Excel 2007在Windows Vista上重现问题。

    (笔记: Excel 和 Windows 的所有实例均具有所有 Windows 更新。)

我还为每个测试添加了一个简单的条件格式公式。在每种情况下,保存文件、关闭 Excel 并重新打开文件后,它都会按预期工作。

所以答案似乎是在保存文件时使用标准的 Excel 2003 文件格式。

顺便说一句,这是一个非常奇怪的格式化公式。很难想象你会如何使用它。这必须是一个非常具体且不寻常的商业案例。我也感觉你的帖子里缺少了一些东西。(我并不是在指责你不诚实——只是想知道你是否为了可读性而缩短了公式。)如果这不是 精确的 您正在使用的公式,请使用完整的公式编辑您的原始帖子,我将很乐意重新讨论此问题。

其他提示

您可以在以下页面找到一些用于自学条件格式问题的教程视频:条件格式

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top