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)
这是一个数组公式,只要其中任何一个具有“N”并且“N”下方的第 2 行中的单元格等于当前列的第 3 行中的单元格,就会为 A1、B1 和 C1 激活。
(这已经从现实世界的业务电子表格中简化了。对于测试用例的复杂性,我很抱歉,我正在尝试在这里找到一个更简单的测试用例。)
它可以工作......您可以以任何您想要的方式更改 N 或 x,并且格式可以正常工作。
将此保存为 XML 电子表格。关闭 Excel,然后重新打开文件。格式现在被破坏了。现在,您只能在 A1 为“N”且 A2 与 A3、B3 或 C3 相同时激活条件格式。B1、B2、C1 和 C2 的值对格式没有影响。
现在,选择 A1:C1 并查看条件格式公式。和以前完全一样。点击确定。条件格式再次开始工作,并将在文件打开的整个会话期间工作。
考虑的解决方法:
以本机 (BIFF) Excel 格式提供文件。不是一种选择,这些电子表格是由网络服务器动态生成的,这只是我们系统动态生成的几十种工作簿中的一种。
以 Excel 2007 本机 XML 格式 (xlsx) 提供文件。不是一个选项,当前用户群没有 Office 2007 或兼容性插件。
要求用户选择范围,进入条件格式对话框,然后点击确定。在这种情况下,不成熟的用户不是一个选择。
要求用户打开 XML 电子表格,另存为原生 XLS,关闭并重新打开 XLS 文件。这不起作用!如果从 XML 文件加载已损坏的格式,则本机 XLS 格式的格式仍然损坏。如果在保存之前执行上述(3),XLS文件将正常工作。
我最终重写了条件格式以不使用数组公式。所以我想这在某种程度上是“答案”,但它仍然是 Excel 2002/2003 处理 XML 文件中的一个未记录的(如果模糊的话)错误。