今回は、Switch関数の取り扱い方法を説明いたします。Switch関数は、Select CaseステートメントやChoose関数と似ていますが、Switch関数のリスト内に複数条件を設定して最初に条件一致した値または、式を返します。
また、IF関数で複数条件を設定するよりも、Switch関数を使うとシンプルに条件設定する事が出来きます。それでは、順番にサンプルプログラムを交えて説明いたします。
【参照ページ:Choose関数】
【参照ページ:Select Case】
【参照ページ:IF Then Else Elself】
' '******** AKIRA55.COM ******* https://akira55.com/Switch/ ' Sub Switch01() '入力した文字列に対して該当する文字列を返します。 Dim Ans, Way As String Way = InputBox("東・西・南・北のいずれかを入力して下さい") '東西南北をいずれかを入力します。 Ans = Switch(Way = "東", "East", Way = "西", "West", Way = "南", "South", Way = "北", "Nouth") On Error Resume Next '【東・西・南・北】以外の文字又は、空白を入力した時のエラー回避 MsgBox Ans '入力結果を表示します。 End Sub '
下記のサンプルプログラム、セルに登録されているデータを元に、Switch関数を使い該当する数値を返すサンプルプログラムです。具体的には、エクセルシートに社員情報の一覧が表示されています。そのデータ内にあるD列の【役職名】から該当する【基本給】をE列に代入します。
' '******** AKIRA55.COM ******* https://akira55.com/Switch/ ' Sub Switch02() 'セルに登録されているデータを元に、Switch関数を使い該当する数値を返します。 Dim Yaku As String Dim I, lRow, Yen As Long lRow = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行を取得します。 For I = 2 To lRow Yen = 0 '代入される「Yen」を0にする(クリアー) Yaku = Cells(I, "D") 'D列の役職名を取得します。 Yen = Switch(Yaku = "部長", 550000, Yaku = "次長", 450000, Yaku = "課長", 400000, _ Yaku = "係長", 350000, Yaku = "主任", 300000, Yaku = "事務員", 250000) '役職名に応じて該当する基本給をYenに代入します。 On Error Resume Next '登録外の役職名を取り込んだ時のエラー回避 Cells(I, "E") = Yen '役職名の基本給をE列に代入します。 Next I End Sub '
下記のサンプルプログラムは、個人のテスト結果(国語・数学・英語)より、テスト結果の合否を判定するサンプルプログラムです。Switch関数を利用する事で、複数条件による判定させるプログラムもシンプルに作成する事ができます。
①国語60点以上 かつ 数学60点以 かつ 英語60点以上 ⇒【合格】
②国語50点以上 かつ 数学50点以 かつ 英語50点以上 かつ 補習受講 ⇒ 【合格】
' '******** AKIRA55.COM ******* https://akira55.com/Switch/ ' Sub Switch03() 'セルに登録されているデータを元に、Switch関数を使い複数条件で合否を判定する。 Dim Hosyu, Hantei As String Dim I, lRow, Kokugo, Sugaku, Eigo As Long lRow = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行を取得します。 For I = 2 To lRow Kokugo = 0: Sugaku = 0: Eigo = 0 '代入される「KOKUGO/SUGAKU/EIGO」を0にする(クリアー) Hantei = "" '判定結果を空白にする Kokugo = Cells(I, "E") 'E列の国語の点数を代入する。 Sugaku = Cells(I, "F") 'F列の数学の点数を代入する。 Eigo = Cells(I, "G") 'G列の英語の点数を代入する。 Hosyu = Cells(I, "H") 'H列の補習の記号を代入する。 '【テスト結果の合否:複数条件】 Hantei = Switch(Kokugo >= 60 And Sugaku >= 60 And Eigo >= 60, "合格", _ Kokugo >= 50 And Sugaku >= 50 And Eigo >= 50 And Hosyu = "受講", "合格") 'Switch関数で上記の複数条件による合格判定を行う On Error Resume Next '登録外のデータを取り込んだ時のエラー回避 Cells(I, "I") = Hantei '判定結果(合計)をI列に代入します。 Next I End Sub '