Excel関数 逆引き集 | エラーをログ用文字列に → TEXT

Excel
スポンサーリンク

概要

「どのセルで、どんなエラーが起きたか」を“ログ”として残したいとき、
エラーをそのまま #N/A や #VALUE! で見せるのではなく、

  • 「B2: 仕入単価が未入力」
  • 「行5: 商品コード不正(#N/A)」

のような 説明付きの文字列 に変換できると便利です。

Excel では、
数値や日付を文字列に整形する TEXT 関数 と、
エラーを拾って置き換える IFERROR / IF を組み合わせることで、
「エラーをログ用メッセージに変換する」しくみを作れます。

ここでは、初心者向けに“型”を中心に解説します。


基本発想:エラーを捕まえてメッセージに変える

IFERROR で「エラーかどうか」を判定する

エラーをログ用文字列に変えたいときの基本構造は、次の形です。

=IFERROR(計算式, "ログ用メッセージ")

動きはこうです。

計算式が正常に終わる
→ その結果を返す

計算式がエラーになる
→ “ログ用メッセージ” を返す(ここが“ログ化”)

「ログ用メッセージ」の中に、
セル番地やエラー内容の説明を文字列として書いておくイメージです。


TEXT 関数の役割

数値や日付を“文字として”ログに埋め込む

TEXT 関数は、

=TEXT(値, "表示形式")

で、

  • 1234 → “1,234”
  • 日付 → “2025-12-22” など

のように、「見せたい形の文字列」に整形してくれます。

ログ用文字列を作るときは、

  • 正常な値 → TEXT で整形してログに書く
  • エラー → IFERROR で別のメッセージを書く

という使い分けをします。

例:売上金額を「¥12,345」のようにしてログに出したい

="売上金額: " & TEXT(A2, "¥#,##0")

これを IFERROR と組み合わせると、
「エラー時は“売上計算エラー”と記録」
のようなログが作れます。


パターン1:計算式がエラーなら、説明付きメッセージに変える

割り算エラー(分母 0 など)をログ化

例:C2÷D2 を計算し、エラーならログ文字列を返す。

=IFERROR(
  C2/D2,
  "行" & ROW() & ": 割り算エラー(分母が0または不正)"
)

正常なとき
→ C2/D2 の結果をそのまま返す

エラーのとき
→ 例)”行5: 割り算エラー(分母が0または不正)”

といったログ用文字列になります。


パターン2:VLOOKUP エラーをログ化(コード不正の記録)

#N/A を「コード不正」として残す

例:A2 の商品コードをマスタから引く VLOOKUP

=IFERROR(
  VLOOKUP(A2, マスタ!$A:$C, 2, FALSE),
  "行" & ROW() & ": 商品コード不正(" & A2 & ")"
)

検索成功
→ 商品名を返す

検索失敗(#N/A など)
→ “行5: 商品コード不正(ABC999)” のようなログ文字列

この「コード不正ログの列」をあとで FILTER や COUNTIF すれば、
どのコードがどれだけ間違えられているか集計もできます。


パターン3:正常値をTEXTで整形し、エラー時は別メッセージ

ログ用に“きれいな書式+エラー文言”を混在させる

例:売上金額のログを作る。
正常なら「売上: ¥xx,xxx」を、
エラーなら「行x: 売上計算エラー」を出したい。

=IFERROR(
  "売上: " & TEXT(A2*B2, "¥#,##0"),
  "行" & ROW() & ": 売上計算エラー"
)

A2×B2 が正常
→ “売上: ¥12,300” のような文字列

A2×B2 がエラー
→ “行5: 売上計算エラー”

このように、
「正常・異常どちらでも “ログとして読める文字列”」になるのがポイントです。


パターン4:日時付きログを作る(タイムスタンプ)

いつエラーが出たかもセットで残す

ワークシート関数だけで簡易ログを作るなら、
NOW() や TODAY() などを TEXT で文字にして埋め込めます。

例:エラーのときだけ「日付+メッセージ」で記録する

=IFERROR(
  A2*B2,
  TEXT(TODAY(), "yyyy-mm-dd") & " 行" & ROW() & ": 売上計算エラー"
)

2025-12-22 行5: 売上計算エラー

のようなログが残せます。

(注意:TODAY() や NOW() は日付が更新されるので、
本格的な変更履歴には向きません。あくまで“簡易ログ”イメージです。)


パターン5:エラーの種類別にログメッセージを変える

IFERROR ではなく IF+ISNA / ISERR を使う応用

「#N/A のときはコード不正」「それ以外のエラーは計算ミス」など、
エラーの種類でメッセージを変えたい場合は、IFERROR ではなく条件分岐をします。

例:VLOOKUP の結果によってログを変える

=IF(
  ISNA(VLOOKUP(A2, マスタ!$A:$C, 2, FALSE)),
  "行" & ROW() & ": 商品コード未登録(" & A2 & ")",
  VLOOKUP(A2, マスタ!$A:$C, 2, FALSE)
)

必要に応じて TEXT で値を整形してログに埋め込むイメージです。


例題

問題1

C2÷D2 を計算し、エラーになった場合は
「行x: 割り算エラー」というログ文字列を返したいです。
x には行番号(ROW())を使います。
このときの式を書いてください。

=IFERROR(C2/D2, "行" & ROW() & ": 割り算エラー")

問題2

A2 の商品コードをマスタ!A:C から VLOOKUP で検索し、
見つからない場合は
「行x: 商品コード不正(コード)」
というログ文字列を返したいです。
x は ROW()、コードは A2 を使って式を書いてください。

=IFERROR(
  VLOOKUP(A2, マスタ!$A:$C, 2, FALSE),
  "行" & ROW() & ": 商品コード不正(" & A2 & ")"
)

問題3

A2×B2 で売上を計算し、
正常なら「売上: ¥xx,xxx」という文字列を、
エラーなら「行x: 売上計算エラー」という文字列を返したいです。
TEXT 関数を使って式を書いてください。

=IFERROR(
  "売上: " & TEXT(A2*B2, "¥#,##0"),
  "行" & ROW() & ": 売上計算エラー"
)

問題4

A2×B2 がエラーになったときだけ、
「yyyy-mm-dd 行x: 売上計算エラー」というログ文字列を返したいです。
日付は TODAY() を TEXT で文字列にして使います。
式を書いてください。

=IFERROR(
  A2*B2,
  TEXT(TODAY(), "yyyy-mm-dd") & " 行" & ROW() & ": 売上計算エラー"
)

問題5

A2 の値を「#,##0.0」形式で文字列にし、
それを「値=xxxx.x」というログ文字列にしたいです。
TEXT を使った式を書いてください。

="値=" & TEXT(A2, "#,##0.0")

まとめ

「エラーをログ用文字列に → TEXT」の本質は、

  • IFERROR や IF で「エラーが出たかどうか」を判定する
  • エラー時には「日本語+セル番地+値」などの説明付き文字列を返す
  • 正常値は TEXT で整形して、そのままログとして読める形にする

という 2 段構えです。

型としては、次のようなパターンを持っておくと応用しやすくなります。

=IFERROR(計算式, "行" & ROW() & ": エラー説明(" & 追加情報 & ")")

エラーをただ隠すのではなく、
「どこで何が起きたか」をテキストとして残せるようになると、
トラブルシュートも品質管理も、一気にやりやすくなります。

タイトルとURLをコピーしました