VBAで文字列を扱っていると、次のようなことはありませんか?
- 文字列の先頭だけ取り出したい
- コードの一部を抽出したい
- 日付やIDを分解したい
このような場合は、Left関数を使うことで解決できます。
文字列の左側(先頭)から指定した文字数を取り出すことができる基本関数です。
この記事では、Left関数の基本から実務で使える応用までを分かりやすく解説します。
この記事でできること
- 文字列の先頭から指定文字数を取得できる
- 文字列の分解ができる
- 実務で使えるコードが分かる
基本:Left関数の使い方
基本構文はこちらです。
Left(文字列, 文字数)
例:
MsgBox Left("ABCDE", 2)
→ AB
Left関数の特徴
- 左(先頭)から指定文字数を取得
- 文字列操作の基本関数
基本例
Dim str As String
str = "ExcelVBA"
MsgBox Left(str, 5)
→ Excel
セルの値から文字を取得する
Range("B1").Value = Left(Range("A1").Value, 3)
A1の先頭3文字をB1に表示します。
日付データの分解(よく使う)
yyyymmdd形式の文字列から年を取得します。
Dim str As String
str = "20240101"
MsgBox Left(str, 4)
→ 2024
条件分岐で使う
Dim code As String
code = "A12345"
If Left(code, 1) = "A" Then
MsgBox "Aグループです"
End If
Lenと組み合わせる
文字数に応じて処理する場合です。
Dim str As String
str = "ABCDE"
MsgBox Left(str, Len(str) - 2)
→ ABC
Mid・Rightとの違い
| 関数 | 内容 |
|---|---|
| Left | 左から取得 |
| Mid | 途中から取得 |
| Right | 右から取得 |
実務での活用例
- 社員コードの先頭判定
- 日付データの分解
- 文字列の分類処理
- データ整形
特にコード判定でよく使われます。
注意点
① 文字数以上を指定すると?
全体が返ります。
Left("ABC", 10) ' → ABC
② Nullに注意
Nullの場合はエラーになります。
安全な書き方(おすすめ)
Dim val As Variant
val = Range("A1").Value
If Not IsNull(val) Then
MsgBox Left(val, 3)
End If
よくあるエラーと対処法
① 型が一致しません
Nullやエラー値の可能性があります。
② 思った文字が取得できない
文字数指定を確認してください。
③ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- Leftは文字列の左側を取得する関数
- 文字列分解の基本
- 条件分岐やデータ整形で活躍
- Mid・Rightとセットで覚える
Left関数を使いこなせるようになると、文字列処理の幅が大きく広がります。
VBAでは非常に使用頻度が高いので、ぜひマスターしておきましょう。

コメント