【Excel】承認ステータスを人間語へ!ネストIF→SWITCHで壊れない式に
申請・承認・差戻しのステータスが「0/1/2」みたいなコードで来る。
これを人間語(申請/承認/差戻し)にしたくて、ネストIFを伸ばしていったら……“誰も触れない式”になった経験、ありませんか?
検証環境(公開前にあなたの環境へ差し替え)
- Excel:Microsoft 365 / Excel 2021 など(SWITCHの動作確認済み環境を記載)
- OS:Windows / Mac
- 想定データ:status_code(0/1/2/…)
※この枠を差し替えられない場合は、枠ごと削ってOKです(一次情報が薄いまま残すと逆効果)。
実は怖いのは「式が長いこと」じゃないです。
仕様変更(文言追加・変更)や、未定義コードが混ざったときに、Excelが黙って誤表示することです。
空白になって気づくならまだマシで、間違った日本語が出ると、もっと遅れて発見します。
この記事の結論(30秒)
- ステータス変換は SWITCHで「辞書っぽく」書く
- 未定義は空白にせず 必ず「要確認」で止める(安全装置)
- 増えてきたら 「表(辞書)で管理」に移行(直す場所を1か所に固定)
この記事は、Excelで業務を回す現場目線で書きます。
「動く」より「死なない」運用を優先して、壊れた原因と直し方を、再現ログ形式も混ぜてまとめます。
最短で動く完成形のSWITCH式
まずはコピペ用の基本形
この章の答えはこれです。ステータスコード(0/1/2)を、人間が読める日本語に置き換えるなら、SWITCHを1本入れるだけで動きます。
参照セル(例:A2)だけ自分の列に合わせて、下の式をそのまま貼ってください。
コピペ用(申請・承認・差戻しの例)
=SWITCH(A2,0,"申請",1,"承認",2,"差戻し","要確認")
- 変換結果を出したい列(例:B2)に式を貼る
- A2の部分だけ、あなたの「ステータスコード列」に合わせる
- 下までオートフィル(コピー)する
この式の見方はシンプルで、「コード → 表示」が並んでいるだけです。
引き継ぎでも、式を見た瞬間に意味が読めます。
| 元のコード | 表示(人間語) | 式のどこに書く? |
|---|---|---|
| 0 | 申請 | 0,"申請" |
| 1 | 承認 | 1,"承認" |
| 2 | 差戻し | 2,"差戻し" |
| (それ以外) | 要確認 | 最後の"要確認" |

SWITCHが見当たらない人へ(Excelの版が古い場合)
もしSWITCH関数が候補に出ないなら、Excelのバージョンが古い可能性があります。
その場合でも、考え方は同じです。「未定義を空白にしない」だけ守れば事故は減ります。
代替①:IFS(使える人向け)
=IFS(A2=0,"申請",A2=1,"承認",A2=2,"差戻し",TRUE,"要確認")
代替②:辞書表+VLOOKUP / INDEX-MATCH(安定運用向き)
この記事後半の「表(辞書)で管理」に進むと、版の差が出にくくなります。
未定義コードは必ず「要確認」に逃がす
未定義コードが来たら、黙って空白にしない。これだけで運用の事故は減らせます。
理由は単純で、空白は埋もれるけど、「要確認」は目に刺さるからです。
再現ログ(現場で起きがちな想定例)
- 現象:新ステータス「3=取下げ」が追加されたが、式の更新が漏れた
- 影響:一覧の一部が空白になり、「未処理」と勘違いされて催促が飛ぶ
- 復旧:コード表を確認→SWITCHに「3,”取下げ”」を追加→未定義は「要確認」に固定→フィルタで未定義行を洗い出し
- 再発防止:デフォルトは必ず「要確認」。加えて「要確認だけ抽出」運用にした
結論:最後の引数(デフォルト)は固定で「要確認」にします。
運用手順(これが一番ラク)
- 一覧をフィルタして「要確認」だけ表示
- 元データが間違いなのか、新ステータス追加なのかを判断
- 新ステータスなら、式(または辞書表)に1行追加して終わり
小ワザ:要確認を「見落とさない」見た目にする
- 条件付き書式で「セルの値が要確認なら強調表示」にする
- 印刷する運用なら、要確認の行だけ太字にする

| 未定義時の表示 | 起きやすいこと | 発見の速さ | おすすめ |
|---|---|---|---|
| 空白 | 「未入力」「未処理」と誤解される | 遅い(気づかない) | NG |
| 要確認 | 仕様変更・データ異常が表に出る | 速い(フィルタで潰せる) | OK |
この判断基準は、別記事でIFERRORの考え方(エラーを消す vs 見せる)として整理しているので、内部リンクでつなげます。
関連:IFERRORで「空白」と「要確認」を使い分ける実務ルール

本で一気に固めたい人向け
ネストIFが地獄化する典型パターン
変更が入った瞬間に壊れる理由
ネストIFは、変更が入った瞬間に事故りやすいです。
理由は、同じルールが複製されて、いつの間にか別ルールになるからです。
- 文言が1つ変わる → コピペ済みの列・別シート・別ファイルまで直しに行く羽目
- コードが1つ増える → 更新漏れして「空白」や「誤表示」が混ざる
- 条件が増える → IFの中にIFを足して、読めない式になる
再現ログ(想定例)
- 状況:表示を「承認」→「承認済」に変更することになった
- やったこと:担当者が“見える範囲の列”のネストIFだけ直してコピペ
- 漏れ:別シート(ピボット元データ側)の同じ式は直し忘れ
- 結果:「承認」と「承認済」が混在し、ピボットの項目が2つに分裂
- 発見:月次締めでズレに気づき、原因探しに時間が溶ける
ネストIF例(典型)
=IF(A2=0,"申請",IF(A2=1,"承認",IF(A2=2,"差戻し","")))
この状態で「3=取下げ追加」「文言変更」「条件追加」が入ると、修正ポイントが一気に増えます。
そして、カッコは合ってるのに意味がズレてる事故が出ます。

ネスト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”(文字列) | 申請 | 一致する |

再現ログ(型の混在で詰みがちな例)
- 現象:外部システムCSVを貼り付けたら、ステータスが全部「要確認」になった
- 原因:CSV側が文字列 “0”,”1″,”2″ で来ていて、SWITCHは数値 0,1,2 で書いていた
- 復旧:補助列で
=IF(A2="","",VALUE(A2))→ SWITCHは補助列参照に変更 - 再発防止:貼り付け列は数値書式に固定+「要確認だけ抽出」運用
余談ですが、型ズレ事故はVBAでも同じです。AI生成VBAの「型が一致しません」系の直し方(環境差の吸収込み)は、別記事でまとめています。

テンプレ①:数値に統一してから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 |

参照で返す(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の基本(「見つけて引く」の考え方を先に固めたい人向け)

“コピペで完結”するチェック観点で事故を封じる
答え:「辞書+変換+要確認チェック」をセットで持つと、仕様変更や未定義コードが来ても“黙って壊れる”のを止められます。
再現例(ありがち)
一覧が多い(例:数千行)と、未定義が混ざっても空白は見落とされやすいです。
だから最初から「要確認だけ抽出」を仕込むと、仕様変更が入ってもまず要確認が立つので、事故の芽が早い段階で潰せます。
同梱するテスト観点(このままチェックシートに貼れる)
- 未定義コード:例: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内製開発完全マニュアル(安全設計編/データ設計編)や、伴走コンサルの導線に使えます。

コメント