Left関数は文字列を先頭から指定した文字数分だけ取得する関数です。
簡単に言うと文字の抜き取りです。
Left関数の構文
Left( String , Length )
Left( 文字列 , 抜き出したい文字数 )
Left関数の使用例
・Left関数内に文字列を直接設定
・Left関数内に文字列がないの場合
・文字列を変数に設定
・Left関数内で文字列の結合
・セルから文字列を取得して隣のセルに設定
・繰り返し処理(for文)
・繰り返し処理(Do While文)
の内容で説明していきます。
Left関数内に文字列を直接設定
Sub Left()
MsgBox Left("abcde", 3)
End Sub

先頭文字から3文字目まで表示されます。
Left関数内に文字列がないの場合
Sub Left1()
MsgBox Left("", 3)
End Sub

文字列がないためメッセージボックス内には何も表示されません。
文字列を変数に設定
Sub Left2()
Dim str As String
str = "abcde"
MsgBox Left(str, 3)
End Sub

str = abcdeなので先頭から3文字までのabcが表示されます。
Left関数内で文字列の結合
Sub Left3()
Dim str As String
str = "abcde"
MsgBox Left(str + "fgh", 7)
End Sub

Left関数ないの文字列は”abcde”+”fgh”=”abcdefgh”になります。
そこから先頭から7文字なのでabcdefgで表示されます。
問題1
以下の内容を実行したときにメッセージボックスに表示される内容はどの様になりますか。
Sub Left4()
Dim str As String
str = "あいうえお"
MsgBox Left(str, 2)
End Sub
問題2
以下の内容を実行したときにメッセージボックスに表示される内容はどの様になりますか。
Sub Left5()
Dim str1, str2 As String
str1 = "あいうえお"
str2 = "かきくけこ"
MsgBox Left(str1 + str2, 2 + 5)
End Sub
問題1の答え

str = “あいうえお”でしたので先頭からの2文字ですので”あい”が表示されます。
問題2の答え

Left(“あいうえお” + “かきくけこ”, 2 + 5)
Left(“あいうえおかきくけこ”, 7)になるため”あいうえおかき”が表示されます。
セルから文字列を取得して隣のセルに設定

B2から文字列を取得してC2に設定します。
Sub Left6()
Dim str As String
str = Range("B2").Value
Range("C2").Value = Left(str, 3)
End Sub
処理の実行

abcの値がC2のセルに設定されました。
同様の処理内容
Left関数内にRange(“B2”)を設定する。
Sub Left7()
Range("C2").Value = Left(Range("B2").Value, 3)
End Sub
Rangeではなく、Cellsで設定する。
Sub Left8()
Dim str As String
str = Cells(2, 2)
Cells(2, 3) = Left(str, 3)
End Sub
上記、2つの処理でもabcの値がC2のセルに設定されます。
Cellsのイメージ

繰り返し処理(for文)

B列に取得したい文字列が8行入力されています。
これを繰り返し処理でC列に先頭から3文字取得して表示させます。
処理内容
Sub Left9()
Dim str As String
Dim i As Integer
For i = 1 To 8
str = Cells(i + 1, 2)
Cells(i + 1, 3) = Left(str, 3)
Next
End Sub
処理の結果

8行分先頭から3文字まで取得できました。
しかし、最後から2行の文字列は数値で表示されました。
VBA側で文字列として処理をしてもExcel側で数値に変換されます。
この表示を修正するにはセルの書式設定で文字列として表示させましょう。


これで数値が正常に文字列として表示されます。
繰り返し処理(Do While文)
for文ではFor i = 1 To 8と記載して8回処理をしたら終了する設定にしました。
Do While文では終了条件で繰り返し処理を終了させます。

終了条件はB列が空白になるまで繰り返し処理を行います。
つまりB10まで繰り返し処理を行います。
処理内容
Sub Left10()
Dim str As String
Dim i As Integer
i = 1
Do While Cells(i + 1, 2) <> ""
str = Cells(i + 1, 2)
Cells(i + 1, 3) = Left(str, 3)
i = i + 1 'この処理が抜けると無限ループになります。
Loop
End Sub
Do While Cells(i + 1, 2) <> “”で空白でない限り処理を繰り返します。
処理の結果

for文と結果は変わりませんがB列が空白でない限り処理が実行されます。
今回はLeft関数を使用した使用例を複数記載致しました。
皆様の参考になれば幸いです。
次回はRight関数の使用例を投稿致します。