Excel VBA | 超初心者(Excel操作+マクロ体験):基本文法 - Left/Right

Excel VBA VBA
スポンサーリンク

Left / Right は「文字列の端っこを切り取るハサミ」

Left と Right は、どちらも
「文字列の端っこから、指定した文字数だけ切り出す」ための関数です。

Left は「左(先頭)から」
Right は「右(末尾)から」

という違いだけで、考え方はまったく同じです。

人間の感覚で言うと、

  • Left:先頭から n 文字だけちょん切る
  • Right:最後から n 文字だけちょん切る

というイメージでOKです。


Left の基本:左(先頭)から n 文字を取り出す

基本構文とシンプルな例

構文はこうです。

Left(文字列, 取り出したい文字数)
VB

例:

Sub SampleLeftBasic()

    Dim s As String
    Dim r As String

    s = "2026/02/23"

    r = Left(s, 4)   ' 先頭から4文字 → "2026"

    MsgBox r

End Sub
VB

ここでは、

  • s は "2026/02/23"
  • Left(s, 4) は「2」「0」「2」「6」の4文字 → "2026"

という動きです。

「年だけ取りたい」「商品コードの先頭の区分だけ取りたい」
みたいな“先頭側の固定桁”を抜き出すときに、Left はよく使います。

文字数を変えて感覚を掴む

同じ文字列で、取り出す文字数を変えてみるとイメージが固まります。

Sub SampleLeftVarious()

    Dim s As String

    s = "ABCDEF"

    MsgBox Left(s, 1)   ' "A"
    MsgBox Left(s, 3)   ' "ABC"
    MsgBox Left(s, 6)   ' "ABCDEF"

End Sub
VB

「先頭から何文字か」を指定するだけ、というシンプルさです。


Right の基本:右(末尾)から n 文字を取り出す

基本構文とシンプルな例

構文はこうです。

Right(文字列, 取り出したい文字数)
VB

例:

Sub SampleRightBasic()

    Dim s As String
    Dim r As String

    s = "2026/02/23"

    r = Right(s, 2)   ' 末尾から2文字 → "23"

    MsgBox r

End Sub
VB

ここでは、

  • s は "2026/02/23"
  • Right(s, 2) は「2」「3」の2文字 → "23"

という動きです。

「日だけ取りたい」「末尾の連番だけ取りたい」
みたいな“末尾側の固定桁”を抜き出すときに、Right が活躍します。

こちらも文字数を変えてみる

Sub SampleRightVarious()

    Dim s As String

    s = "ABCDEF"

    MsgBox Right(s, 1)   ' "F"
    MsgBox Right(s, 3)   ' "DEF"
    MsgBox Right(s, 6)   ' "ABCDEF"

End Sub
VB

Left と対称的に、「最後から何文字か」を指定するだけです。


Left / Right が光る「商品コード」「日付文字列」の例

商品コードの「区分」と「連番」を分ける

例えば、こんな商品コードがあるとします。

  • "A-00123"
  • "B-00456"

ここから、

  • 先頭の「区分」(A, B)
  • 末尾の「3桁の連番」(123, 456)

を取り出したい、というケースです。

Sub SampleCodeSplit()

    Dim code As String
    Dim kubun As String
    Dim renban As String

    code = "A-00123"

    kubun = Left(code, 1)      ' 先頭1文字 → "A"
    renban = Right(code, 3)    ' 末尾3文字 → "123"

    MsgBox "区分: " & kubun & vbCrLf & "連番: " & renban

End Sub
VB

ここでのポイントは、

  • 「区分」は常に1文字 → Left(code, 1)
  • 「連番」は常に3桁 → Right(code, 3)

という“固定桁”を素直に切っているだけ、ということです。

日付文字列から「年」「月」「日」を取り出す

"2026/02/23" のような文字列から、
年・月・日をそれぞれ取り出す例です(あくまで文字列として扱うパターン)。

Sub SampleDateSplit()

    Dim s As String
    Dim yyyy As String
    Dim mm As String
    Dim dd As String

    s = "2026/02/23"

    yyyy = Left(s, 4)          ' "2026"
    mm = Mid(s, 6, 2)          ' "02"
    dd = Right(s, 2)           ' "23"

    MsgBox yyyy & "年" & mm & "月" & dd & "日"

End Sub
VB

ここでは Mid も混ざっていますが、
Left / Right が「端っこ担当」、Mid が「真ん中担当」という役割分担になっています。


Len と組み合わせると「柔軟な切り方」ができる

「最後の1文字を除いた部分」を取りたい

文字列の長さが毎回違う場合、
「右から3文字」ではなく「最後の1文字を除いた残り全部」のような指定をしたくなることがあります。

そのときに使えるのが Len との組み合わせです。

Sub SampleLeftWithLen()

    Dim s As String
    Dim body As String

    s = "ABCDEF"

    body = Left(s, Len(s) - 1)

    MsgBox body   ' → "ABCDE"

End Sub
VB

ここでの考え方は、

  • 全体の長さ:Len(s)
  • 最後の1文字を除く → 「全体の長さ – 1」文字ぶんを Left で取る

というものです。

「右から3文字目以降を全部」取りたい

今度は Right と Len を組み合わせてみます。

Sub SampleRightWithLen()

    Dim s As String
    Dim part As String

    s = "ABCDEFG"

    ' 右から3文字目以降 → 全体の長さ - 3 + 1 文字目から最後まで
    part = Mid(s, Len(s) - 3 + 1)

    MsgBox part   ' → "EFG"

End Sub
VB

ここでは Mid も使っていますが、
Len で「どこから切り始めるか」を計算しているのがポイントです。

Len を組み合わせると、

  • 「右から n 文字目から m 文字」
  • 「最後の k 文字を除いた部分」

のような、ちょっとひねった切り方も自然に書けるようになります。


Left / Right を使うときに意識してほしいこと

「何文字か」は“仕様”として決めておく

Left / Right は、「何文字切るか」を自分で決める関数です。
ということは、

  • 商品コードの区分は必ず1文字なのか?
  • 連番は必ず3桁なのか?
  • 日付のフォーマットは常に "YYYY/MM/DD" なのか?

といった「前提条件(仕様)」を、ちゃんと決めておく必要があります。

仕様がブレると、Left / Right だけでは対応しきれなくなります。
そのときは InStr で区切り文字の位置を調べてから切る、などの工夫が必要です。

「見た目」と「実際の文字数」がズレていないか

前後にスペースが入っていたり、
全角スペースが紛れ込んでいたりすると、
Left / Right で切った結果が「なんかおかしい」ことがあります。

そういうときは、

  • Trim で前後のスペースを削る
  • Replace で全角スペースを半角に統一する

など、「切る前の掃除」をしておくと安定します。


まとめ:Left / Right は「端から切る」ための基本ハサミ

Left / Right の本質は、とてもシンプルです。

  • Left(文字列, n):左(先頭)から n 文字を取り出す
  • Right(文字列, n):右(末尾)から n 文字を取り出す

そして本当に力を発揮するのは、

  • 「商品コードの区分」「連番」
  • 「日付文字列の年・月・日」
  • 「固定桁の識別子」

のような、“端から何文字”で意味が決まっている文字列を扱うときです。

タイトルとURLをコピーしました