にわかプログラマの備忘録

仕事の過程で調べたことを忘れないように記載しています

【スプレッドシート】条件付き書式で別シートを指定する

f:id:sorane0908:20210831150216p:plain
条件付き書式を設定する際、別シートを指定するにはちょっと工夫する必要があります。



INDIRECT() の関数を使用します。
これは「文字列で指定」されたセルの内容を持ってきます。
シート1のA1を指定するなら

=INDIRECT("'シート1'!A1")

と記載します。

ですが、当然「文字列で指定」されているので、この関数をコピーしようと、ドラッグして範囲を広げようと最初の指定した範囲からは変わりません。

そのため

=INDIRECT("'シート1'!"&CELL("address",A1))

とすることで可変させます。

CELLはaddress以外にもいくつか設定可能な値があります。

address絶対参照でテキストを返す
例:A1 → $A$1
col列番号を返す
例:A1 → 1
contentsセルの中身を返す
prefixテキスト配置を返す
左揃え → 単一引用符(')
右揃え → 二重引用符(")
中央揃え → カラット(^)
その他 → 空白
row行番号を返す
例:A1 → 1
typeセル内のデータの種類を返す
空白 → "b"
テキスト → "l"(ラベル)
その他 → "v"(値)
widthセルに収まる文字数の単位で列幅を返します
返される数値は、デフォルトのフォントサイズにおけるゼロ(0)文字の幅に基づいて決定されます。

widthに関しては公式テキストを読んでもよく分かりませんでした。
公式にpxとは違うとあり、実際にセルの幅を変更しても、中の文字を変更しても、文字サイズを変更しても数値に変化は見られませんでした。いったい何を基準に列幅を出しているんだ……。