【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です。ExcelVBAには、文字列・数値を操作する関数は多数あります。
「頻繁に使われるもの」もあれば「あまり使われないもの」もありますがいくつか紹介していきます。
置換するには、Replase関数を使用します。
文字列の中に指定した文字があった場合、置換します。
書き方 Replace(置換したい文字列、指定した文字、置換したい文字、開始する位置、置換回数)
※開始する位置と置換回数は省略できます。
サンプルコード
Sub TEST1()
MsgBox Replace("ABCDEFG", "DEF", "ZYX") ・・・1-1
MsgBox Replace("ABCABCABCABC", "ABC", "UVW") ・・・1-2
MsgBox Replace("ABCABCABCABC", "ABC", "UVW", 2) ・・・1-3
MsgBox Replace("ABCABCABCABC", "ABC", "UVW", 2, 1) ・・・1-4
End Sub
1-1の実行結果は、「ABCZYXG」
1-2の実行結果は、「UVWUVWUVWUVW」
1-3の実行結果は、「BCUVWUVWUVW」
1-4の実行結果は、「BCUVWABCABC」とメッセージボックスが表示されます。
抜き出すには、Left関数、Right関数、Mid関数のいずれかを使用します。
Left関数は、文字列の左から指定した数の文字を取得します。
Right関数は、文字列の右から指定した数の文字を取得します。
Mid関数は、文字列列の指定した位置から指定した文字を取得します。
「書き方」 Left(文字列, 文字数), Right(文字列, 文字数), Mid(文字列, 開始位置, 文字数)
サンプルコード
Sub TEST2()
MsgBox Left("ABCDEFG", 3) ・・・2-1
MsgBox Right("ABCDEFG", 3) ・・・2-2
MsgBox Mid("ABCDEFG", 3, 4) ・・・2-3
End Sub
2-1の実行結果は、「ABC」
2-2の実行結果は、「EFG」
2-3の実行結果は、「CDEF」とメッセージボックスが表示されます。
検索して、あった位置を表示するときはInstr関数を使用します。
文字列の中に指定した文字があるか確認し、あった場合位置を表示します。
「書き方」 Instr(開始する位置, 文字列, 検索したい文字)
※開始する位置は省略できます。
サンプルコード
Sub TEST3()
MsgBox InStr("ABCDEFG", "EFG") ・・・3-1
MsgBox InStr(2, "ABCABCABCABC", "ABC") ・・・3-2
End Sub
3-1の実行結果は、「5」
3-2の実行結果は、「4」とメッセージボックスが表示されます。
スペースを削除するにはTrim関数、LTrim関数、RTrim関数を使用します。
Trim関数は、文字列の左から指定した数の文字を取得します。
LTrim関数は、文字列の左側にあるスペースを削除します。
RTrim関数は、文字列の右側にあるスペースを削除します。
「書き方」 Trim(文字列), LTrim(文字列), RTrim(文字列)
サンプルコード
※下記サンプルコードでは、スペースが削除されているかをわかりやすくするために前後に"*"を付与しています。
Sub TEST4()
MsgBox "*" & RTrim(" あいうえお ") & "*" ・・・4-1
MsgBox "*" & LTrim(" あいうえお ") & "*" ・・・4-2
MsgBox "*" & Trim(" あいうえお ") & "*" ・・・4-3
End Sub
4-1の実行結果は、「* あいうえお*」
4-2の実行結果は、「*あいうえお *」
4-3の実行結果は、「*あいうえお*」とメッセージボックスが表示されます。
数値かを判別するにはIsNumeric関数を使用します。
数値かをTrueまたはFalseで判定します。
「書き方」 IsNumeric(文字列)
サンプルコード
Sub TEST5()
MsgBox IsNumeric(123) ・・・5-1
MsgBox IsNumeric("ABC") ・・・5-2
End Sub
5-1の実行結果は、「TRUE」
5-2の実行結果は、「FALSE」とメッセージボックスが表示されます。
形式を判別するにはTypeName関数を使用します。
形式(LongやString等)を出力します。
「書き方」 TypeName(文字列)
サンプルコード
Sub TEST6()
MsgBox TypeName(123) ・・・6-1
MsgBox TypeName(1234567890) ・・・6-2
MsgBox TypeName("ABC") ・・・6-3
End Sub
6-1の実行結果は、「Integer」
6-2の実行結果は、「Long」
6-3の実行結果は、「String」とメッセージボックスが表示されます。
形式を変更するには、StrConv関数を使用します。
定数箇所を変更して、形式内容を決定します。
「書き方」 Strconv(文字列, 定数)
定数一覧
定数 | 処理内容 |
---|---|
vbUpperCase | 文字列を小文字のアルファベットを大文字に変換します |
vbLowerCase | 文字列を大文字のアルファベットを小文字に変換します |
vbProperCase | 文字列を先頭のみ大文字に変換します |
vbHiragana | 文字列をひらがな変換します |
vbNarrow | 文字列をカタカナ変換します |
vbKatakana | 文字列を半角変換します |
vbWide | 文字列を全角変換します |
サンプルコード
Sub TEST7()
MsgBox StrConv("abcdefg", vbUpperCase) ・・・7-1
MsgBox StrConv("ABCDEFG", vbLowerCase) ・・・7-2
MsgBox StrConv("abcdefg", vbProperCase) ・・・7-3
MsgBox StrConv("アイウエオ", vbHiragana) ・・・7-4
MsgBox StrConv("あいうえお", vbKatakana) ・・・7-5
MsgBox StrConv("ABCDE", vbNarrow) ・・・7-6
MsgBox StrConv("ABCDE", vbWide) ・・・7-7
End Sub
7-1の実行結果は、「ABCDEFG」
7-2の実行結果は、「abcdefg」
7-3の実行結果は、「Abcdefg」とメッセージボックスが表示されます。
7-4の実行結果は、「あいうえお」
7-5の実行結果は、「アイウエオ」とメッセージボックスが表示されます。
7-6の実行結果は、「ABCDE」
7-7の実行結果は、「ABCDE」とメッセージボックスが表示されます。
書式を変更するには、Format関数を使用します。
記号箇所を変更して、書式内容を決定します。
「書き方」 Format(文字列, 記号)
記号一覧
記号 | 処理内容 |
---|---|
# | #で指定した桁に数値が存在しない場合、0が出力されない |
0 | 0で指定した桁に数値が存在しない場合、0が出力される |
, | 「#」か「0」と合わせて使用し、数値の1000単位部分に「,」が記載される |
. や - | 「#」か「0」と合わせて使用し、指定した位置に「.」が記載される |
% | 数値を100倍して、「%」が記載される |
& | 文字1つ分が記載され、存在しない場合、スペースが出力されない |
@ | 文字1つ分が記載され、存在しない場合、スペースが出力される |
サンプルコード
※スペースの存在がわかるよう一部頭に"A"を頭に付与してします。
Sub TEST8()
MsgBox Format(12345, "######") ・・・8-1
MsgBox Format(12345, "000000") ・・・8-2
MsgBox Format(12345, "000,000") ・・・8-3
MsgBox Format(12345, "@@@-@@") ・・・8-4
MsgBox Format(67890, "@@.@@@") ・・・8-5
MsgBox Format(0.98, "00%") ・・・8-6
MsgBox "A" & Format(12345, "@@@-@@@@") ・・・8-7
MsgBox "A" & Format(12345, "&&&-&&&&") ・・・8-8
End Sub
8-1の実行結果は、「12345」
8-2の実行結果は、「012345」
8-3の実行結果は、「012,345」
8-4の実行結果は、「123-45」
8-5の実行結果は、「67.890」
8-6の実行結果は、「98%」
8-7の実行結果は、「A 1-2345」
8-8の実行結果は、「A1-2345」とメッセージボックスが表示されます。
Nullかを判別するにはIsNull関数を使用します。
NullかをTrueまたはFalseで判定します。
「書き方」 IsNull(文字列)
サンプルコード
Sub TEST9()
MsgBox IsNull(Null) ・・・9-1
MsgBox IsNull("ABC") ・・・9-2
MsgBox IsNull(123) ・・・9-3
End Sub
9-1の実行結果は、「TRUE」
9-2の実行結果は、「FALSE」
9-3の実行結果は、「FALSE」とメッセージボックスが表示されます。
小数点を取り除くにはInt関数、Fix関数を使用します。
共に小数点を取り除きますが負の数である時、出力される数値が異なります。
Int関数は絶対値が大きくなる方に、Fix関数は絶対値が小さくなる方になります。
「書き方」 Int(文字列), Fix(文字列)
サンプルコード
Sub TEST10()
MsgBox Int(100.5) ・・・10-1
MsgBox Fix(100.5) ・・・10-2
MsgBox Int(-100.5) ・・・10-3
MsgBox Fix(-100.5) ・・・10-4
End Sub
10-1の実行結果は、「100」
10-2の実行結果は、「100」
10-3の実行結果は、「-101」
10-4の実行結果は、「-100」とメッセージボックスが表示されます。
小数点を四捨五入するにはRound関数を使用します。
通常の四捨五入とは異なるところがあります。
四捨五入を行う対象となる数値が「5」の場合、数値が偶数に近い絶対値になります。それ以外は通常の四捨五入です。
「書き方」 Round(文字列, 四捨五入後の小数点の桁数)
サンプルコード
Sub TEST11()
MsgBox Round(100.15, 1) ・・・11-1
MsgBox Round(100.25, 1) ・・・11-2
End Sub
11-1の実行結果は、「100.2」
11-2の実行結果は、「100.2」とメッセージボックスが表示されます。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート