SWITCHを古いEXCEL(2016以前)でも使用できるようにする | EXCELトピックス

スポンサーリンク
スポンサーリンク

SWITCH関数を2016以前で使用できるようにする VBAをつかって

代用ではなく、SWITCH関数を古いEXCELでも使用できるようにする方法です。

Excel 2016以前のバージョンでは、SWITCH関数がサポートされていません。そのため、Excelのバージョンによっては複数の条件を簡潔に扱うことが難しい場合があります。この記事では、VBAを使って、Excel 2016以前でもSWITCH関数と同様に使えるようにする方法を紹介します。このVBAコードを追加することで、関数名もそのままSWITCHとし、動作も全く同じように利用することができます。

このVBAを実装することで、変更することなく、そのままSWITCH関数をEXCEL2016以前でも使用できるようになります。

VBAでSWITCH関数を実装する方法

まずはVBAエディタでカスタム関数を作成し、標準のSWITCH関数と同じ動作を実装します。以下のコードをVBAエディタに入力してください。

手順

  1. Excelを開き、開発→Visual Basic を開きます。(alt+F11でも開きます)
  2. 「挿入」メニューから「標準モジュール」を選択します。
  3. 以下のコードをコピーし、モジュールに貼り付けます。

VBAコード

Function SWITCH(Expression As Variant, ParamArray Args() As Variant) As Variant
    Dim i As Integer
    For i = LBound(Args) To UBound(Args) - 1 Step 2
        If i = UBound(Args) Then
            SWITCH = Args(i)
            Exit Function
        End If
        If Expression = Args(i) Or Args(i) = True Then
            SWITCH = Args(i + 1)
            Exit Function
        End If
    Next i
    SWITCH = CVErr(xlErrNA) ' エラー処理: 条件に合致しない場合は #N/A を返す
End Function

コードの解説

  • Expression: 条件を比較する対象の値を指定します。
  • ParamArray Args(): 可変長引数として条件と結果のペアを設定します。
  • Forループ: 条件と結果のペアを順番に確認し、条件が一致したらその結果を返します。
  • CVErr(xlErrNA): どの条件にも一致しない場合は、#N/Aエラーを返します。

使用方法

VBAで定義したSWITCH関数は、標準のSWITCH関数と同じように使えます。以下の例では、セルに点数が入力されている場合に、点数に応じて評価を表示します。

例:SWITCH関数を使った評価表示

例えば、点数に応じてA~Eの評価を表示したい場合、以下のようにSWITCH関数を使用します。

例:

=SWITCH(TRUE, B2 >= 90, “A”, B2 >= 80, “B”, B2 >= 70, “C”, B2 >= 60, “D”, B2 >= 50, “E”, “F”)

実際の使用例

以下の表では、点数に応じて評価が表示されます。

A B C
1 名前 点数 評価
2 佐藤 95 =SWITCH(TRUE, B2 >= 90, “A”, B2 >= 80, “B”, B2 >= 70, “C”, B2 >= 60, “D”, B2 >= 50, “E”, “F”)
3 高橋 82 =SWITCH(TRUE, B3 >= 90, “A”, B3 >= 80, “B”, B3 >= 70, “C”, B3 >= 60, “D”, B3 >= 50, “E”, “F”)
4 井上 68 =SWITCH(TRUE, B4 >= 90, “A”, B4 >= 80, “B”, B4 >= 70, “C”, B4 >= 60, “D”, B4 >= 50, “E”, “F”)

まとめ

このVBAコードを追加することで、Excel 2016以前のバージョンでもSWITCH関数を利用できます。これにより、複数の条件に基づいた結果を効率よく処理でき、Excelの互換性が向上します。