Excel: 条件付き書式設定の式でセルのテキストをワークシートの名前として使用する

Excel: 条件付き書式設定の式でセルのテキストをワークシートの名前として使用する

タイトルは私がやろうとしていることを完全に表現していますが、少し複雑で難解なので、ユースケースを使って説明します。

互いに非常に近い 2 つのシート (SheetA と SheetB) を含む Excel ワークブックがあり、その違いを視覚的に強調表示したい場合、これを実現する一般的な方法は次のようになります。

  • SheetAですべてのセルを強調表示します
  • 条件付き書式、新しいルール、数式の使用を入力
  • 数式ボックスに次のように入力します。

    =a1<>シートB!a1

  • 希望の書式を適用し、「OK」をクリックします

基本的に、これは SheetA のすべてのセルを SheetB の対応するセルと比較し、等しくない場合は書式を適用します。シート名が複雑な場合 (特にスペースが含まれているため引用符が必要な場合)、数式入力中にタブ名をクリックすると便利です。

しかし、SheetAのセルに、SheetB の名前を含むテキスト式を入力し、上記の条件付き書式の数式でそのセルを参照したいと思います。

(なぜでしょうか? スプレッドシートが 100 枚あり、そのたびに条件付き書式を手動で変更するのではなく、セル内のテキストを変更して、1 と 2、1 と 3、1 と 55 を比較したいからです。)

どうやってやるの?

INDIRECT 関数はテキストをシート名に変換するために使用されることは承知しており、条件付き書式の数式の一部として INDIRECT 関数を使用して、そのテーマで複数のバリエーションを試しましたが、実際には何も機能しないようです。

答え1

次のような条件付き書式の数式を使用します。

= A1 <> INDIRECT(ADDRESS(ROW(A1), COLUMN(A1),,, aSheet), TRUE)

aSheet比較するシートの名前を保存したセルへの参照に置き換えます。

ADDRESS()ROW()関数は、およびCOLUMN()関数を使用して評価対象のセルの行と列を計算し、セル参照をテキスト文字列として組み立てます。

関数を省略して、文字列連結を使用して R1C1 形式でセル参照を作成することもできますADDRESS()が、上記の数式の方が読みやすく理解しやすいでしょう。同等のものは次のようになります。

= A1 <> INDIRECT(aSheet & "!R" & ROW(A1) & "C" & COLUMN(A1), FALSE)

関連情報