条件付き書式を 数式で設定 する場合、構文や参照方法を誤ると「無効な数式」としてエラーになったり、適用されなかったりします。
この記事では、よくあるトラブル例とその対処方法を紹介します。
目次
1. セル参照が無効になっている
例:存在しないセルを参照している
Range("A1:A10").FormatConditions.Add _
Type:=xlExpression, Formula1:="=$Z$9999>100"
→ 実際にはシートに「Z9999」が存在しない場合、数式は無効になります。
👉 対処法
- 参照範囲が実在するか確認
- データ範囲外を指定しないようにする
2. 相対参照・絶対参照の誤り
条件付き書式は範囲全体に適用されるため、数式の参照方法が間違っていると意図通りに動きません。
NG例(すべてB2しか見ない)
Formula1:="=$B$2=""未処理"""
OK例(各行のB列を参照)
Formula1:="=$B1=""未処理"""
👉 ポイント
- 行ごとに判定する → 行番号は相対参照にする
- 列固定で判定する → 列記号は絶対参照にする
3. 数式の書き方が不適切
典型的なエラー例
Formula1:="B1>100"
→ 「=」が抜けているため無効Formula1:="=IF(B1>100,TRUE,FALSE)"
→ 条件付き書式ではIF
は不要。論理式そのものを記述すればOK。
👉 正しい例
Formula1:="=B1>100"
4. 他シート参照の禁止
条件付き書式は 他シートを参照できません。
NG例
Formula1:="=Sheet2!A1>100"
👉 対処法
- 必要な値を現在のシートにコピーしてから参照
- VBAでループ処理を使い、別シートを参照して書式設定を行う
5. 空白セルやエラーセルの扱い
条件式に空白やエラー値(#DIV/0!
など)が含まれると、数式が無効になる場合があります。
👉 対処法
ISNUMBER
やISERROR
でラップして安全に判定する
例:数値が100以上かつエラーセルを無視
Formula1:="=AND(ISNUMBER(B1),B1>=100)"
6. まとめ
数式が無効になる典型例と対処法は次のとおりです。
- 存在しないセルを参照している → 実在範囲を指定する
- 相対/絶対参照が誤っている → 行/列を適切に固定
- 数式の書き方が不適切 → 「=」を忘れない、IFは不要
- 他シートは参照できない → 値コピーやVBA処理で対応
- 空白・エラーセル →
ISNUMBER
やISERROR
で判定
コメント