Excel関数 逆引き集 | 検証用メッセージ出力 → LET

Excel
スポンサーリンク

概要

「この行、どこが間違っているのか分かりづらい…」
「計算前に“検証メッセージ”を出して、原因を明確にしたい」
「複雑なチェックを一つの式にまとめたい」

そんなときに最強なのが LET 関数を使った“検証用メッセージ出力” です。

LET を使うと、

  • チェック項目に名前をつけて整理
  • どの条件に引っかかったかをメッセージ化
  • 最後に“正常 or 異常”を分かりやすく返す

という 読みやすくて修正しやすい検証ロジック が作れます。


LET の基本

LET の書式

=LET(
  名前1, 値1,
  名前2, 値2,
  …,
  最終的に返す式
)

LET のメリットは、

  • 途中計算に名前をつけて整理できる
  • 同じ計算を何度も書かなくてよい
  • 検証ロジックを“見える化”できる

という点です。

検証メッセージ出力では、
「チェック結果を名前として保持 → 最後にメッセージ化」
という流れで使います。


パターン1:入力チェックのメッセージをまとめる

数量(A2)と単価(B2)の検証メッセージを出す

=LET(
  qty, A2,
  price, B2,
  msg_qty, IF(qty="", "数量が未入力です。", ""),
  msg_price, IF(price="", "単価が未入力です。", ""),
  msg_qty & msg_price
)

動き:

  • A2 が空白 → 「数量が未入力です。」
  • B2 が空白 → 「単価が未入力です。」
  • 両方空白 → 2つのメッセージが連結
  • どちらも正常 → 空文字(=問題なし)

複数のチェックを“名前付き”で整理できるので、
IF の入れ子より圧倒的に読みやすくなります。


パターン2:異常値チェックをまとめてメッセージ化

0〜100 の範囲外なら異常メッセージを返す

=LET(
  v, A2,
  msg_low, IF(v<0, "値が0未満です。", ""),
  msg_high, IF(v>100, "値が100を超えています。", ""),
  msg_low & msg_high
)

異常が複数あれば複数メッセージが返り、
正常なら空文字になります。


パターン3:計算前チェック+正常時の計算を一つにまとめる

入力チェック → 問題なければ売上計算

=LET(
  qty, A2,
  price, B2,
  msg, IF(qty="", "数量未入力。", "") &
       IF(price="", "単価未入力。", ""),
  IF(msg<>"", msg, qty*price)
)

動き:

  • どこかが未入力 → メッセージを返す
  • 問題なし → qty*price を返す

「検証 → 計算」の流れが一つの式にまとまります。


パターン4:複数の検証結果を“改行付き”で返す

メッセージを見やすく整形する

=LET(
  qty, A2,
  price, B2,
  msg1, IF(qty="", "数量が未入力です。", ""),
  msg2, IF(price="", "単価が未入力です。", ""),
  TEXTJOIN(CHAR(10), TRUE, msg1, msg2)
)

CHAR(10) は改行コード。
複数のメッセージを縦に並べて返せます。


パターン5:検証メッセージとログ用情報を組み合わせる

行番号や日付を含めた“検証ログ”を作る

=LET(
  v, A2,
  msg, IF(v="", "未入力", IF(v<0, "負の値", "")),
  IF(msg="", "OK", "行" & ROW() & ": " & msg)
)

正常なら「OK」
異常なら「行5: 未入力」などのログ形式で返します。


例題

問題1

A2(数量)と B2(単価)をチェックし、
数量が空白なら「数量未入力」、
単価が空白なら「単価未入力」、
両方正常なら空文字を返す LET 式を書いてください。

=LET(
  qty, A2,
  price, B2,
  msg_qty, IF(qty="", "数量未入力", ""),
  msg_price, IF(price="", "単価未入力", ""),
  msg_qty & msg_price
)

問題2

A2 の値が 0 未満なら「負の値」、
100 を超えるなら「上限超過」、
正常なら空文字を返す LET 式を書いてください。

=LET(
  v, A2,
  msg_low, IF(v<0, "負の値", ""),
  msg_high, IF(v>100, "上限超過", ""),
  msg_low & msg_high
)

問題3

A2(数量)と B2(単価)をチェックし、
どちらかが未入力ならメッセージを返し、
両方正常なら A2×B2 を返す LET 式を書いてください。

=LET(
  qty, A2,
  price, B2,
  msg, IF(qty="", "数量未入力", "") &
       IF(price="", "単価未入力", ""),
  IF(msg<>"", msg, qty*price)
)

問題4

A2 と B2 のチェックメッセージを
改行付きで返す LET+TEXTJOIN の式を書いてください。

=LET(
  qty, A2,
  price, B2,
  msg1, IF(qty="", "数量未入力", ""),
  msg2, IF(price="", "単価未入力", ""),
  TEXTJOIN(CHAR(10), TRUE, msg1, msg2)
)

問題5

A2 の値を検証し、
未入力なら「行x: 未入力」、
負の値なら「行x: 負の値」、
正常なら「OK」を返す LET 式を書いてください。

=LET(
  v, A2,
  msg, IF(v="", "未入力", IF(v<0, "負の値", "")),
  IF(msg="", "OK", "行" & ROW() & ": " & msg)
)

まとめ

「検証用メッセージ出力 → LET」のポイントは次の通りです。

  • チェック項目に名前をつけて整理できる
  • 複数の検証結果をまとめてメッセージ化できる
  • 正常時と異常時の処理を一つの式にまとめられる
  • IF の入れ子より読みやすく、修正しやすい

まずはこの型を覚えておくと便利です。

=LET(
  チェック名1, 判定式1,
  チェック名2, 判定式2,
  …,
  最後に返すメッセージ or 計算式
)

LET を使うと、
“どこが問題か分かりやすいシート”が作れるようになります。
検証ロジックを整理したいときは、ぜひ活用してみてください。

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