広告

【プログラミング入門】【VBA】13日目 文字列の操作(文字数、比較、抜き取り、結合、置換)

2022.10.10更新

ExcelVBAでプログラミング入門のタイトル画像になります

お仕事などでお馴染みの表計算ソフト、エクセルに付属しているExcelVBA(エクセルブイビーエー)というプログラミング言語を使って初心者・入門者向けにプログラミングのキホンを解説していきます!

ExcelVBAができるようになれば業務内容によってはボタン一つで大幅な業務効率化ができる他に、普段のエクセルの使い方も段違いにレベルアップする事ができます!

ベテランの方も新人さんも興味のある方はぜひ挑戦してみてください!

文字列の操作

今回は文字列(文章)についてもう少し詳しくやりたいと思います。

文字列の文字数を調べたり、文字列同志をつなげたり、逆に文字列を分解したり・・・。

事務処理系のプログラムには欠かせない技術ですね!

文字数

■13日目 プログラム1■


'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

■実行結果■

VBAにおける文字列操作の基本の説明画像1

■説明■

文字数が知りたい時は


Len(bunsyou1)

	↓

Len(文字数が知りたい文章)
	

「Len」命令を使います。

ひらがな、漢字、アルファベットの区別なく一文字ずつカウントしてくれます。

実行結果にもあるように「hello world」などは空白の分もカウントするのでそのへんは注意が必要です。

同じか?

■13日目 プログラム2■


'13日目 プログラム2

Sub test()

	Dim kotae As String
	
	MsgBox "英単語テストです!答えを小文字で入力してください!"

	kotae = InputBox("りんごは英語で?")

	If kotae = "apple" Then
		MsgBox "よくできました!正解です!"
	Else
		MsgBox "残念!不正解です!"
	End If
	
End Sub

■実行結果■

VBAにおける文字列操作の基本の説明画像2

■説明■

文章同士が同じかどうかを調べるのには


If kotae = "apple" Then

数字と同じようにそのまま「=」が使えます。

一部を抜き取る

■13日目 プログラム3■


'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

■実行結果■

VBAにおける文字列操作の基本の説明画像3

■説明■

文字列の一部を抜き取るには


kekka1 = Mid(bunsyou,1,3)

	↓

kekka1 = Mid(元の文章,始点,抜き取る文字数)

「Mid」命令を使います。

文章の一番最初の文字は1番目になります。

最初の一文字だけ抜き出したい時・・・「Mid(bunsyou,1,1)」

2番目の文字から3文字だけ抜き出したい時・・・「Mid(bunsyou,2,3)」

のようにします。

広告

文章を分ける

■13日目 プログラム4■


'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

■実行結果■

VBAにおける文字列操作の基本の説明画像4

■説明■

ある決まった文字で文章を分けたい時には

			
hairetu = Split(bunsyou,",")

	↓

hairetu = Split(元の文章,",分ける文字")

「Split」命令を使います。

今回は「,」コンマで分けてますが、もちろん「分ける文字」を変えれば「/」スラッシュや「:」コロンで分ける事も可能です。

分けたデータを用意した配列に順番に保存してくれます。

配列を用意する時に

配列数や()カッコをつけないで「Variant」型にする

トコロに注意です。

配列の始まりの数は必ず「0」番になります。

例えば大量に並んだデータ、いわゆるデータファイルというものからデータを読み込み、それを配列に保存するような時に使われます。

何も言わずに使ってしまいましたが配列の個数を知りたい時は「LBound」・「UBound」命令を使います。

「LBound(配列)」・・・配列の最初の数がわかります

「UBound(配列)」・・・配列の最後の数がわかります

配列の最後まで「for」命令で繰り返し処理をしたい時などによく使います。

文章をくっつける

■13日目 プログラム5■


'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

■実行結果■

VBAにおける文字列操作の基本の説明画像5

■説明■

文章同士をくっつけたい時は

そのまま「&」でくっつける事ができます。

今までも何度か登場したので説明はいらないですね!

文章の置き換え(置換)

■13日目 プログラム6■


'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

■実行結果■

VBAにおける文字列操作の基本の説明画像6

■説明■

文章を置き換えるには


kekka1 = Replace(bunsyou,"こんにちは","おいっす",1,1)

	↓

kekka1 = Replace(元の文章,"置き換えたい文章","置き換える文章",開始位置,置き換える回数)

「Replace」命令を使います。

開始位置は置換を始めたい場所を指定します。

一文字目なら「1」、20文字目なら「20」のように指定します。

文章の途中から置換を始める場合はその前の文章は削除されてしまいます。

削除される部分も使いたい時は文章先頭から指定した文字数分だけ抜き取る「Left」命令という便利な命令があるので、あらかじめ


bunsyou2 = Left(bunsyou,11)

	↓

bunsyou2 = Left(元の文章,文章先頭から抜き出したい文字数)

のようにして必要な部分を抜き出しておいて、


kekka4 = bunsyou2 & kekka3

「&」でつなげます。

「置き換える回数」に指定した回数分だけ置換を行います。

「-1」を指定するとすべて置換してくれます。

文字列を操作する便利ワザのほんの一部を紹介させていただきました。

事務処理には欠かせない技術なのでたくさん練習してマスターしてください!

次回はいよいよ自分で簡単な命令を作っていきます。

次回

14日目(最終日) 関数の使い方

広告

Copyright 2016 K.N/petitetech.com