Excel は通常、条件付き書式の数式を、Excel 2002/2003 XML スプレッドシート ファイルからロードする場合を除いて、配列数式であるかのように扱います。
これは、Excel 2002/2003 XML スプレッドシート形式のみの問題です...ネイティブの Excel 形式は、新しい Excel 2007 XML 形式 (xlsx) と同様に正常に動作します。
スプレッドシートをロードした後、フォーマットされた範囲を選択し、[条件付き書式設定] ダイアログに移動して [OK] をクリックすると、スプレッドシートが正しく機能するようにすることができますが、これはセッションの問題のみを修正します。
テストケース:
新しいシートに次のように入力します。
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 を選択し、条件付き書式の数式を確認します。以前とまったく同じです。[OK] をクリックします。条件付き書式が再び機能し始め、ファイルが開いているセッション全体で機能します。
考慮される回避策:
ファイルをネイティブ (BIFF) Excel 形式で提供します。オプションではありません。これらのスプレッドシートは Web サーバーによってオンザフライで生成されます。これは、システムによって動的に生成される数十種類のワークブックの 1 つにすぎません。
ファイルを Excel 2007 ネイティブ XML 形式 (xlsx) で提供します。オプションではありません。現在のユーザー ベースには Office 2007 または互換プラグインがありません。
ユーザーに範囲を選択するように求め、条件付き書式設定ダイアログに入り、[OK] をクリックします。この場合のオプションではありません。洗練されていないユーザーです。
ユーザーに、XML スプレッドシートを開いてネイティブ XLS として保存し、XLS ファイルを閉じてから再度開くように求めます。これは動作しません!XML ファイルから破損してロードされた場合、ネイティブ XLS 形式では書式設定が破損したままになります。上記(3)を行ってから保存すると、XLSファイルが正常に動作します。
配列数式を使用しないように条件付き書式を書き直しました。したがって、これはある程度「回答」されていると思いますが、Excel 2002/2003 の XML ファイル処理のバグであり、文書化されていません。