
Excel関数は便利だけど、条件が増えるとどんどん読みにくくなる…。
業務の中でこんな経験はありませんか?



「IFが多すぎて、もう何が何だか…」
「VLOOKUPを入れ子にしたけど、壊れたら直せない…」
この記事では、複雑な処理を関数で頑張っていた人に向けて、VBAでのシンプルな書き方を実例でご紹介します。
目次
Excel関数での複雑な処理の壁
以下のような処理、あなたもやったことありませんか?
例:60点以上なら「合格」、80点以上なら「優秀」、それ以外は「不合格」
関数での書き方:
=IF(C2>=80,"優秀",IF(C2>=60,"合格","不合格"))
これくらいならまだ見やすいですが、
さらに条件が増えると、以下のような“スパゲッティ状態”になります。
=IF(AND(A2="営業",C2>=80),"S", IF(AND(A2="営業",C2>=60),"A", IF(AND(A2="技術",C2>=70),"B","C")))
見づらい・メンテナンスできない・他人が触れない
── これが関数の限界です。
VBAならどう書けるか?実例で紹介
同じ処理をVBAで書くとこうなります。
Sub 評価を付ける() Dim i As Long For i = 2 To 100 Select Case Cells(i, 3).Value Case Is >= 80 Cells(i, 4).Value = "優秀" Case Is >= 60 Cells(i, 4).Value = "合格" Case Else Cells(i, 4).Value = "不合格" End Select Next i End Sub
わかりやすさのポイント
- Select Case構文で条件をスッキリ整理
- 条件変更も簡単にできる
- 誰が見ても理解しやすい
入れ子地獄からの解放
複数の IF
や AND
、 OR
を駆使していた処理も、
VBAの条件分岐(If〜Else
や Select Case
)ならロジックを視覚的に整理できます。
VBAで処理をまとめるメリット
- 処理のまとまりが明確
- 同じロジックを複数のシートやブックで再利用可能
- 将来的なメンテナンスが容易
おわりに|関数からVBAへの一歩が「効率化」への鍵
VBAは難しそうに見えて、実は構造化されていて初心者にもわかりやすい言語です。
関数で苦労している作業こそ、VBAに変える価値があります。
コメント