【Excel VBA】If Elseとは違う条件式(Select Case)について
エンジニアのIMMRです。Excel VBAの条件式には、以前に説明したExcel VBA 条件式(If Else)とこれから説明するSelect Caseの二つあります。1.従来のIf Else条件式If Elseは条件に合った時は処理Aを、条件に合わなかったら処理Bを実行します。では、下記のようなデータがあり、複数の条件があるとします。If Elseを使用して作成すると2種類の方法が浮かぶと思
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
皆さんこんにちは、エンジニアのIMMRです。
ワイルドカードって便利ですよね。
A〇〇〇のようにAで始まる4桁の文字や
B△△やB△△△△のようにBから始まる文字(文字数関係なし)が比較出来たりするんですから
VBAでも同じようなことができるので説明します。
「Like」演算子を使って比較する方法は5種類あります。
”あ”から始まる4文字の文字列です。
図1 エクセル(参考1)
※”あ”から始まる4文字の文字列が比較対象になります。
”い”から始まる文字列です。文字数の条件は問いません。
図2 エクセル(参考2)
※”い”から始まるものでしたら全てが比較対象になります。
”う”から始まる4文字の数字です。
図3 エクセル(参考3)
※”う”から始まる4桁の数字が比較対象となります。
リスト内に指定した文字列(”A”~”F”)です。
図4 エクセル(参考4)
※A~Fが比較対象となります。
リスト内に指定した文字列(”A”~”F”)以外の文字列です。
図5 エクセル(参考5)
※A~F以外が比較対象となります。
上記で、例を挙げた①~⑤のサンプルプログラムを紹介します。
「Like」演算子でセルを確認して、
別シートに比較対象となった文字列を出力するといったことを行います。
入力シート=IN
出力シート=OUT
で行います。
①任意の一文字のサンプルプログラムです
Sub test01()
Dim i As Long
Dim i2 As Long
i2 = 2
For i = 2 To 9
If Worksheets("IN").Cells(i, 1) Like "あ???" Then
Worksheets("OUT").Cells(i2, 1) = Worksheets("IN").Cells(i, 1)
i2 = i2 + 1
End If
Next
End Sub
”あ”から始まる4文字の文字列なので Like "あ???" と記載します。
②任意の文字列のサンプルプログラムです
Sub test02()
Dim i As Long
Dim i2 As Long
i2 = 2
For i = 2 To 11
If Worksheets("IN").Cells(i, 1) Like "い*" Then
Worksheets("OUT").Cells(i2, 1) = Worksheets("IN").Cells(i, 1)
i2 = i2 + 1
End If
Next
End Sub
”い”から始まる文字列なので Like "い*" と記載します。
③任意の数字のサンプルプログラムです
Sub test03()
Dim i As Long
Dim i2 As Long
i2 = 2
For i = 2 To 9
If Worksheets("IN3").Cells(i, 1) Like "う####" Then
Worksheets("OUT").Cells(i2, 1) = Worksheets("IN3").Cells(i, 1)
i2 = i2 + 1
End If
Next
End Sub
”う”から始まる4桁の数値なので Like "う####" と記載します。
④リスト[]に指定した任意の一文字のサンプルプログラムです
Sub test04()
Dim i As Long
Dim i2 As Long
i2 = 2
For i = 2 To 11
If Worksheets("IN").Cells(i, 1) Like "[A-F]" Then
Worksheets("OUT").Cells(i2, 1) = Worksheets("IN").Cells(i, 1)
i2 = i2 + 1
End If
Next
End Sub
リスト内に”A”~”F”を入れるので、Like "[A-F]" と記載します
⑤リスト[]に指定した任意の一文字以外のサンプルプログラムです
Sub test05()
Dim i As Long
Dim i2 As Long
i2 = 2
For i = 2 To 11
If Worksheets("IN").Cells(i, 1) Like "[!A-F]" Then
Worksheets("OUT").Cells(i2, 1) = Worksheets("IN").Cells(i, 1)
i2 = i2 + 1
End If
Next
End Sub
リスト内の”A”~”F”以外が対象なので、Like "[!A-F]" と記載します
①任意の一文字のサンプルプログラムの実行結果
図6 サンプルプログラム①の実行結果
※”あ”から始まる4文字の文字列です。
②任意の文字列のサンプルプログラムの実行結果
図7 サンプルプログラム②の実行結果
※”い”から始まる文字列です。文字数の条件は問いません。
③任意の数字のサンプルプログラムの実行結果
図8 サンプルプログラム③の実行結果
※”う”から始まる4桁の数字です。
④リスト[]に指定した任意の一文字のサンプルプログラムの実行結果
図9 サンプルプログラム④の実行結果
※リスト内に指定した文字列(”A”~”F”)です。
⑤リスト[]に指定した任意の一文字以外のサンプルプログラムの実行結果
図10 サンプルプログラム⑤の実行結果
※リスト内に指定した文字列(”A”~”F”)以外の文字列です。
どれも正しく、比較対象をして出力することができました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート