アフィリエイト広告を利用しています
アフィリエイト広告を利用しています

【Excel】承認ステータスを人間語へ!ネストIF→SWITCHで壊れない式に

①事務攻略の書

【Excel】承認ステータスを人間語へ!ネストIF→SWITCHで壊れない式に

申請・承認・差戻しのステータスが「0/1/2」みたいなコードで来る。

これを人間語(申請/承認/差戻し)にしたくて、ネストIFを伸ばしていったら……“誰も触れない式”になった経験、ありませんか?

検証環境(公開前にあなたの環境へ差し替え)

  • Excel:Microsoft 365 / Excel 2021 など(SWITCHの動作確認済み環境を記載)
  • OS:Windows / Mac
  • 想定データ:status_code(0/1/2/…)

※この枠を差し替えられない場合は、枠ごと削ってOKです(一次情報が薄いまま残すと逆効果)。

実は怖いのは「式が長いこと」じゃないです。

仕様変更(文言追加・変更)や、未定義コードが混ざったときに、Excelが黙って誤表示することです。

空白になって気づくならまだマシで、間違った日本語が出ると、もっと遅れて発見します。

この記事の結論(30秒)

  1. ステータス変換は SWITCHで「辞書っぽく」書く
  2. 未定義は空白にせず 必ず「要確認」で止める(安全装置)
  3. 増えてきたら 「表(辞書)で管理」に移行(直す場所を1か所に固定)

この記事は、Excelで業務を回す現場目線で書きます。

「動く」より「死なない」運用を優先して、壊れた原因と直し方を、再現ログ形式も混ぜてまとめます。


最短で動く完成形のSWITCH式

まずはコピペ用の基本形

この章の答えはこれです。ステータスコード(0/1/2)を、人間が読める日本語に置き換えるなら、SWITCHを1本入れるだけで動きます。

参照セル(例:A2)だけ自分の列に合わせて、下の式をそのまま貼ってください。

コピペ用(申請・承認・差戻しの例)

=SWITCH(A2,0,"申請",1,"承認",2,"差戻し","要確認")
  • 変換結果を出したい列(例:B2)に式を貼る
  • A2の部分だけ、あなたの「ステータスコード列」に合わせる
  • 下までオートフィル(コピー)する

この式の見方はシンプルで、「コード → 表示」が並んでいるだけです。

引き継ぎでも、式を見た瞬間に意味が読めます。

元のコード 表示(人間語) 式のどこに書く?
0 申請 0,"申請"
1 承認 1,"承認"
2 差戻し 2,"差戻し"
(それ以外) 要確認 最後の"要確認"

SWITCHステータス変換_ビフォーアフター

SWITCHが見当たらない人へ(Excelの版が古い場合)

もしSWITCH関数が候補に出ないなら、Excelのバージョンが古い可能性があります。

その場合でも、考え方は同じです。「未定義を空白にしない」だけ守れば事故は減ります。

代替①:IFS(使える人向け)

=IFS(A2=0,"申請",A2=1,"承認",A2=2,"差戻し",TRUE,"要確認")

代替②:辞書表+VLOOKUP / INDEX-MATCH(安定運用向き)

この記事後半の「表(辞書)で管理」に進むと、版の差が出にくくなります。

未定義コードは必ず「要確認」に逃がす

未定義コードが来たら、黙って空白にしない。これだけで運用の事故は減らせます。

理由は単純で、空白は埋もれるけど、「要確認」は目に刺さるからです。

再現ログ(現場で起きがちな想定例)

  • 現象:新ステータス「3=取下げ」が追加されたが、式の更新が漏れた
  • 影響:一覧の一部が空白になり、「未処理」と勘違いされて催促が飛ぶ
  • 復旧:コード表を確認→SWITCHに「3,”取下げ”」を追加→未定義は「要確認」に固定→フィルタで未定義行を洗い出し
  • 再発防止:デフォルトは必ず「要確認」。加えて「要確認だけ抽出」運用にした

結論:最後の引数(デフォルト)は固定で「要確認」にします。

運用手順(これが一番ラク)

  1. 一覧をフィルタして「要確認」だけ表示
  2. 元データが間違いなのか、新ステータス追加なのかを判断
  3. 新ステータスなら、式(または辞書表)に1行追加して終わり

小ワザ:要確認を「見落とさない」見た目にする

  • 条件付き書式で「セルの値が要確認なら強調表示」にする
  • 印刷する運用なら、要確認の行だけ太字にする

要確認を見落とさない_フィルタと強調表示

未定義時の表示 起きやすいこと 発見の速さ おすすめ
空白 「未入力」「未処理」と誤解される 遅い(気づかない) NG
要確認 仕様変更・データ異常が表に出る 速い(フィルタで潰せる) OK

この判断基準は、別記事でIFERRORの考え方(エラーを消す vs 見せる)として整理しているので、内部リンクでつなげます。

関連:IFERRORで「空白」と「要確認」を使い分ける実務ルール

【実務ルール付き】Excel IFERRORでエラーを消す判断基準|空白と要確認の使い分け
「社長、このエラー何?」と聞かれ業務が止まる経営者様へ。ExcelのIFERRORで安易に空白にすると、請求漏れ等の事故に繋がります。対外書類は「非表示」、社内管理は「要確認」など、事故を防ぐ判断基準と実務用テンプレを解説します。

本で一気に固めたい人向け

1冊あると「式の選び方」で迷わなくなります

現場の「こう使う」がまとまっていて早いです

改善ネタが枯れがちな人ほど刺さります

辞書化(表で管理)に進むならこの辺が近道です

属人化を止めたいなら「参照設計」からが効きます


ネストIFが地獄化する典型パターン

変更が入った瞬間に壊れる理由

ネストIFは、変更が入った瞬間に事故りやすいです。

理由は、同じルールが複製されて、いつの間にか別ルールになるからです。

  • 文言が1つ変わる → コピペ済みの列・別シート・別ファイルまで直しに行く羽目
  • コードが1つ増える → 更新漏れして「空白」や「誤表示」が混ざる
  • 条件が増える → IFの中にIFを足して、読めない式になる

再現ログ(想定例)

  • 状況:表示を「承認」→「承認済」に変更することになった
  • やったこと:担当者が“見える範囲の列”のネストIFだけ直してコピペ
  • 漏れ:別シート(ピボット元データ側)の同じ式は直し忘れ
  • 結果:「承認」と「承認済」が混在し、ピボットの項目が2つに分裂
  • 発見:月次締めでズレに気づき、原因探しに時間が溶ける

ネストIF例(典型)

=IF(A2=0,"申請",IF(A2=1,"承認",IF(A2=2,"差戻し","")))

この状態で「3=取下げ追加」「文言変更」「条件追加」が入ると、修正ポイントが一気に増えます。

そして、カッコは合ってるのに意味がズレてる事故が出ます。

ネストIF地獄_vs_SWITCH可読性

ネストIFとSWITCHの保守コスト比較

保守で見るなら、SWITCHのほうがミスを減らしやすいです。

理由は、「コード→表示」が並んで見えるので、レビューと修正が速いからです。

比較軸 ネストIF SWITCH
レビューしやすさ カッコとインデントで目が滑る 「0は申請、1は承認…」が読める
未定義対応 空白にしがちで見落としやすい デフォルトで「要確認」を入れやすい
修正の集約 式が増殖しやすい テンプレを揃えやすい

修正時間メモ(目安:構成・慣れで変わります)

  • ネストIF:式の場所探し→読み直し→カッコ確認→別シート確認…が発生しやすい
  • SWITCH:該当ペア(例:3,"取下げ")を足して、デフォルトが「要確認」か確認して終わり

※「読める式」はレビューが速くなります。時間の差はここで出ます。


壊れないSWITCHの書き方テンプレ

壊れないSWITCHは、「型をそろえる」→「デフォルトで止める」→「文言を短くする」→「説明を別に持つ」の4点セットで作ります。

壊れないSWITCH:4点セット

  • 型:数値か文字列かを統一(混在させない)
  • デフォルト:未定義は必ず「要確認」へ(空白にしない)
  • 文言:一覧に出すラベルは短く固定(集計が割れない)
  • 説明:変わりやすい説明は別列(式を触る頻度を下げる)

型を統一して事故を消す

答え:ステータスコードは「数値」に統一してからSWITCHをかけるのが一番安定します。

見た目が「0」でも実体が文字列の "0" だと、0 と一致しないからです。

パターン 入力(A2) SWITCH側 結果 原因
NG:型が混在 “0”(文字列) 0(数値) 一致せず「要確認」 “0” ≠ 0
OK:数値に統一 0(数値) 0(数値) 申請 一致する
OK:文字列に統一 “0”(文字列) “0”(文字列) 申請 一致する

型ズレ事故_文字列0と数値0

再現ログ(型の混在で詰みがちな例)

  • 現象:外部システムCSVを貼り付けたら、ステータスが全部「要確認」になった
  • 原因:CSV側が文字列 “0”,”1″,”2″ で来ていて、SWITCHは数値 0,1,2 で書いていた
  • 復旧:補助列で =IF(A2="","",VALUE(A2)) → SWITCHは補助列参照に変更
  • 再発防止:貼り付け列は数値書式に固定+「要確認だけ抽出」運用

余談ですが、型ズレ事故はVBAでも同じです。AI生成VBAの「型が一致しません」系の直し方(環境差の吸収込み)は、別記事でまとめています。

AI作成のVBAが動かない?JsonConverter導入でエラーを即解決する「環境設計」の極意
ChatGPTにVBAを書かせたがJSONエラーで動かずお困りの経営者必見。動かない原因はスキルではなく環境不足です。JsonConverterの導入手順と参照設定を3分で解説。この記事を読めばAIを真の部下にする「環境設計」の極意が分かります。

テンプレ①:数値に統一してからSWITCH(使える人はこの形がラク)

=LET(code, IF(A2="","", VALUE(A2)),SWITCH(code,0,"申請",1,"承認",2,"差戻し","要確認"))

「LETがまだ怖い」という人は、補助列に分ければOKです。

テンプレ①-別案:補助列で数値化

(B2:数値化)=IF(A2="","",VALUE(A2))
(C2:表示)=SWITCH(B2,0,"申請",1,"承認",2,"差戻し","要確認")

「要確認だけ抽出」列を作ると、未定義が混ざった瞬間に潰せます。

チェック列(要確認を見逃さない)

=IF(C2="要確認","要確認","")

ステータスが増えたら表で辞書管理に切り替える

ステータスが増え始めたら、SWITCHを伸ばすより「表(辞書テーブル)で管理」に切り替えたほうが安全です。

理由はシンプルで、修正する場所を1か所に固定できるからです。

SWITCHを卒業する判断基準

目安はこれです。1つでも当てはまったら辞書テーブルへ寄せます。

当てはまったら辞書テーブルへ

  • ステータスが6個以上になった(目安)
  • 「表示ラベル」以外に説明文も必要になった
  • 部署によってラベルが割れる(例:経理は「承認済」、現場は「OK」)
  • コード追加・変更が月1以上で発生する(目安)
  • 「無効(廃止)」にしたコードを残したい(過去データのため)

辞書表(マスタ)を作る

別シートに辞書表(マスタ)を置きます。

辞書表は「テーブル化」しておくと、行が増えても参照範囲がズレにくいです(あとで見返す時も読みやすい)。

code label desc active
0 申請 申請者が提出済み 1
1 承認 上長が承認済み 1
2 差戻し 差戻し理由あり。修正して再申請 1
3 取下げ 申請者が取り下げ 1

辞書テーブル管理_修正は1か所

参照で返す(XLOOKUP/代替案つき)

一覧側(例:A2にcodeが入っている)の表示ラベルは、これでOKです。

XLOOKUP(未定義は要確認)

=XLOOKUP(A2, 辞書!A:A, 辞書!B:B, "要確認")

説明も出したいなら、返す列を変えるだけです。

説明(desc)を返す

=XLOOKUP(A2, 辞書!A:A, 辞書!C:C, "要確認")

注意:XLOOKUPが使えない版もあります。その場合は次の代替式で「辞書管理」の構造は同じにできます。

代替案(INDEX/MATCH:未定義は要確認)

=IFERROR(INDEX(辞書!B:B, MATCH(A2, 辞書!A:A, 0)), "要確認")

ここで大事なのは、未定義を黙らせないことです。

参照系でも、必ず「要確認」で止めます。

関連:VLOOKUP / XLOOKUPの基本(「見つけて引く」の考え方を先に固めたい人向け)

【脱・眼精疲労】まだ表を目で追って探してるの?「VLOOKUP(ブイルックアップ)」がその作業、0.1秒で終わらせます。
お疲れ様です。「メリ爺の事務攻略万歳!」へようこそ。管理人のメリ爺です。現場の事務員さん、そして見積書を作っている親方。突然ですが、こんな「間違い探し」みたいな作業をしていませんか?【よくある地獄の光景】 注文書に「商品コード:A-001」...

“コピペで完結”するチェック観点で事故を封じる

答え:「辞書+変換+要確認チェック」をセットで持つと、仕様変更や未定義コードが来ても“黙って壊れる”のを止められます。

再現例(ありがち)

一覧が多い(例:数千行)と、未定義が混ざっても空白は見落とされやすいです。

だから最初から「要確認だけ抽出」を仕込むと、仕様変更が入ってもまず要確認が立つので、事故の芽が早い段階で潰せます。

同梱するテスト観点(このままチェックシートに貼れる)

  • 未定義コード:例:9が来たら必ず「要確認」になる(空白にしない)
  • 空白の方針:A2が空のとき、空白扱いにするのか/要確認にするのかを決めて統一
  • 型ズレ:“0”(文字列)と0(数値)が混ざっても、どこかで検知できる
  • 将来のコード追加:3を追加しても、修正が1か所(式 or 辞書)で済む

テストケース表(このままチェックシートに貼れる)

No 入力(status_code) 想定 期待表示(label) チェック方法
1 0 定義済み 申請 一覧で1件確認
2 1 定義済み 承認 一覧で1件確認
3 9 未定義 要確認 要確認フラグで抽出できる
4 (空白) 方針どおり (空白 or 要確認) 方針と一致しているか確認
5 “0”(文字列) 型ズレ (要確認推奨) 要確認で拾える/VALUEで直せる

このページのサンプル(辞書表・テスト表)をコピーして使う

ダウンロード不要。必要な表をそのまま別シートに貼れば、最低限の安全装置が入ります。


まとめ

ステータス変換は、ネストIFよりSWITCHが安全です。

辞書っぽく書けて、最後に「要確認」を入れられるからです。

増えてきたら、表(辞書)に移して「直す場所を1か所」に寄せると、運用が長持ちします。

押さえるポイント

  • コードの型(数値/文字列)を統一する
  • 未定義は空白にせず「要確認」にする
  • 文言は短く、説明は別列に逃がす
  • 増えてきたら辞書(表)で管理して参照にする

うちの業務に合わせて“壊れない設計図”を作る

Antigravity内製開発完全マニュアル(安全設計編/データ設計編)や、伴走コンサルの導線に使えます。

当ブログは、お風呂好きのみなさんとに快適なお風呂生活を楽しんで頂きたい思いで運営しています。
「記事が役に立った」「続きも読んでみたい」と感じていただけたら、下記リンクからのご利用・ご支援で応援してもらえると嬉しいです。

※Amazonのアソシエイトとして、「メリ爺の事務攻略万歳」は適格販売により収入を得ています。

①事務攻略の書
シェアする
メリ爺をフォローする

コメント

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