広告
お仕事などでお馴染みの表計算ソフト、エクセルに付属しているExcelVBA(エクセルブイビーエー)というプログラミング言語を使って初心者・入門者向けにプログラミングのキホンを解説していきます!
ExcelVBAができるようになれば業務内容によってはボタン一つで大幅な業務効率化ができる他に、普段のエクセルの使い方も段違いにレベルアップする事ができます!
ベテランの方も新人さんも興味のある方はぜひ挑戦してみてください!
今回は文字列(文章)についてもう少し詳しくやりたいと思います。
文字列の文字数を調べたり、文字列同志をつなげたり、逆に文字列を分解したり・・・。
事務処理系のプログラムには欠かせない技術ですね!
'13日目 プログラム1 Sub test() Dim bunsyou1 As String Dim bunsyou2 As String Dim bunsyou3 As String bunsyou1 = "hello world" bunsyou2 = "おはよう" bunsyou3 = "りんごは英語でapple" Worksheets("sheet1").Cells(1,1).Value = bunsyou1 & "→" & Len(bunsyou1) Worksheets("sheet1").Cells(2,1).Value = bunsyou2 & "→" & Len(bunsyou2) Worksheets("sheet1").Cells(3,1).Value = bunsyou3 & "→" & Len(bunsyou3) End Sub
文字数が知りたい時は
Len(bunsyou1) ↓ Len(文字数が知りたい文章)
「Len」命令を使います。
ひらがな、漢字、アルファベットの区別なく一文字ずつカウントしてくれます。
実行結果にもあるように「hello world」などは空白の分もカウントするのでそのへんは注意が必要です。
'13日目 プログラム2 Sub test() Dim kotae As String MsgBox "英単語テストです!答えを小文字で入力してください!" kotae = InputBox("りんごは英語で?") If kotae = "apple" Then MsgBox "よくできました!正解です!" Else MsgBox "残念!不正解です!" End If End Sub
文章同士が同じかどうかを調べるのには
If kotae = "apple" Then
数字と同じようにそのまま「=」が使えます。
'13日目 プログラム3 Sub test() Dim bunsyou As String Dim kekka1 As String Dim kekka2 As String Dim kekka3 As String bunsyou = "hello world" kekka1 = Mid(bunsyou,1,3) kekka2 = Mid(bunsyou,3,1) kekka3 = Mid(bunsyou,5,3) Worksheets("sheet1").Cells(1,1).Value = "元の文章→" & bunsyou Worksheets("sheet1").Cells(2,1).Value = "kekka1(1,3)→" & kekka1 Worksheets("sheet1").Cells(3,1).Value = "kekka1(3,1)→" & kekka2 Worksheets("sheet1").Cells(4,1).Value = "kekka1(5,3)→" & kekka3 End Sub
文字列の一部を抜き取るには
kekka1 = Mid(bunsyou,1,3) ↓ kekka1 = Mid(元の文章,始点,抜き取る文字数)
「Mid」命令を使います。
文章の一番最初の文字は1番目になります。
最初の一文字だけ抜き出したい時・・・「Mid(bunsyou,1,1)」
2番目の文字から3文字だけ抜き出したい時・・・「Mid(bunsyou,2,3)」
のようにします。
広告
'13日目 プログラム4 Sub test() Dim bunsyou As String Dim hairetu As Variant Dim suji As Integer bunsyou = "田中,鈴木,佐藤,吉田,斉藤" hairetu = Split(bunsyou,",") For suji = LBound(hairetu) To UBound(hairetu) Worksheets("sheet1").Cells(suji + 1,1).Value = _ "hairetu(" & suji & ") = " & hairetu(suji) Next End Sub
ある決まった文字で文章を分けたい時には
hairetu = Split(bunsyou,",") ↓ hairetu = Split(元の文章,",分ける文字")
「Split」命令を使います。
今回は「,」コンマで分けてますが、もちろん「分ける文字」を変えれば「/」スラッシュや「:」コロンで分ける事も可能です。
分けたデータを用意した配列に順番に保存してくれます。
配列を用意する時に
配列数や()カッコをつけないで「Variant」型にする
トコロに注意です。
配列の始まりの数は必ず「0」番になります。
例えば大量に並んだデータ、いわゆるデータファイルというものからデータを読み込み、それを配列に保存するような時に使われます。
何も言わずに使ってしまいましたが配列の個数を知りたい時は「LBound」・「UBound」命令を使います。
「LBound(配列)」・・・配列の最初の数がわかります
「UBound(配列)」・・・配列の最後の数がわかります
配列の最後まで「for」命令で繰り返し処理をしたい時などによく使います。
'13日目 プログラム5 Sub test() Dim bunsyou1 As String Dim bunsyou2 As String Dim bunsyou3 As String bunsyou1 = "「私の名前は" bunsyou2 = "田中一郎です!」" bunsyou3 = bunsyou1 & bunsyou2 MsgBox bunsyou3 End Sub
文章同士をくっつけたい時は
そのまま「&」でくっつける事ができます。
今までも何度か登場したので説明はいらないですね!
'13日目 プログラム6 Sub test() Dim bunsyou As String Dim kekka1 As String Dim kekka2 As String Dim kekka3 As String bunsyou = "校長先生、こんにちは!教頭先生、こんにちは!" kekka1 = Replace(bunsyou,"こんにちは","おいっす",1,1) kekka2 = Replace(bunsyou,"こんにちは","おいっす",1,-1) kekka3 = Replace(bunsyou,"こんにちは","おいっす",12,-1) Worksheets("sheet1").Cells(1,1).Value = "元の文章:" & bunsyou Worksheets("sheet1").Cells(2,1).Value = "kekka1 = " & kekka1 Worksheets("sheet1").Cells(3,1).Value = "kekka2 = " & kekka2 Worksheets("sheet1").Cells(4,1).Value = "kekka3 = " & kekka3 End Sub
文章を置き換えるには
kekka1 = Replace(bunsyou,"こんにちは","おいっす",1,1) ↓ kekka1 = Replace(元の文章,"置き換えたい文章","置き換える文章",開始位置,置き換える回数)
「Replace」命令を使います。
開始位置は置換を始めたい場所を指定します。
一文字目なら「1」、20文字目なら「20」のように指定します。
文章の途中から置換を始める場合はその前の文章は削除されてしまいます。
削除される部分も使いたい時は文章先頭から指定した文字数分だけ抜き取る「Left」命令という便利な命令があるので、あらかじめ
bunsyou2 = Left(bunsyou,11) ↓ bunsyou2 = Left(元の文章,文章先頭から抜き出したい文字数)
のようにして必要な部分を抜き出しておいて、
kekka4 = bunsyou2 & kekka3
「&」でつなげます。
「置き換える回数」に指定した回数分だけ置換を行います。
「-1」を指定するとすべて置換してくれます。
文字列を操作する便利ワザのほんの一部を紹介させていただきました。
事務処理には欠かせない技術なのでたくさん練習してマスターしてください!
次回はいよいよ自分で簡単な命令を作っていきます。
広告
Copyright 2016 K.N/petitetech.com