月次の集計表を作っていたときのことです。
売上区分ごとに金額を分ける必要があり、
最初はシンプルなIF関数で対応しました。
=IF(A2=”A”,100,0)
ところが、翌月から条件が増えます。
「Bも追加で」
「Cの場合は別単価で」
「特定の得意先は例外処理して」
そのたびにIFを足していきました。
気づけば式はこうなっていました。
=IF(A2=”A”,100,
IF(A2=”B”,200,
IF(A2=”C”,300,
IF(A2=”D”,400,
IF(A2=”E”,500,0)))))
スクロールしないと全体が見えません。
数週間後、修正依頼が来ます。
「Cの金額だけ変更して」
どこを直せばいいのか一瞬で分からない。
怖くて触れない。
下手に触ると全部壊れそう。
さらに問題なのは、
自分以外が触れないことです。
引き継ぎのとき、こう言われます。
「この式、複雑すぎて分かりません。」
IF関数そのものが悪いわけではありません。
問題は、“1つのセルに全部を書いたこと”です。
ネストが増えた時点で、
設計を見直すサインが出ています。
なぜネストは増え続けるのか
IF関数が複雑になるのは、技術不足が原因ではありません。
原因はシンプルです。
「とりあえず今動けばいい」で足していくから。
最初は1条件。
次に例外処理。
さらに特別対応。
そのたびに、
「今の式の外側にIFを追加すればいいか」
と足していく。
結果、横に長い式が完成します。
しかしこのやり方には問題があります。
・どこからどこまでが1セットか分かりにくい
・カッコの対応が見づらい
・修正時に壊れやすい
・他人が読めない
つまり、“保守できない式”になります。
Excelは「動けばOK」ではありません。
“修正できるかどうか”が実務では重要です。
よくある失敗パターン
典型的なのがこの形です。
=IF(A2="A",100,
IF(A2="B",200,
IF(A2="C",300,
IF(A2="D",400,
IF(A2="E",500,0)))))
一見すると問題なさそうに見えます。
しかし、例えば
「Cだけ単価を350に変更」
と言われた場合。
どこを直すのか探す必要があります。
さらに条件が10個、15個と増えたらどうなるか。
スクロール必須。
目視確認困難。
修正ミスのリスク増大。
ネストが3段を超えたら、
それは“設計見直しのサイン”です。
1セル完結を疑ってください。
解決策:分解する
一番簡単な解決策は、分解です。
1つのセルで完結させない。
例えば次のようにします。
① 別表を作る
品番 | 単価
A | 100
B | 200
C | 300
D | 400
E | 500
② VLOOKUPで参照
=VLOOKUP(A2, F2:G6, 2, FALSE)
これでネストは消えます。
条件が増えても、
式は変えずに「表を追加」するだけ。
これが実務で強い設計です。
もう1つの方法:途中セルを使う
どうしてもIFを使うなら、
B列:区分判定
C列:単価決定
D列:最終計算
と役割を分けます。
1セル1役割。
すると、
・式が短くなる
・修正箇所が明確になる
・引き継ぎが楽になる
「読めるExcel」になります。
実務で覚えておきたい基準
ネストは3段まで。
4段目に入ったら、
「表で管理できないか?」
「分解できないか?」
と自分に問いかける。
IFが悪いのではありません。
設計を後回しにすることが、
ネスト地獄の正体です。
まとめ
IF関数が読めなくなる原因は、
・条件を足し続ける
・1セル完結にこだわる
・設計を見直さない
この3つです。
解決策はシンプル。
・表にする
・分解する
・ネストは3段まで
これだけで、
“触れないExcel”から“直せるExcel”に変わります。





コメント