Mid関数・Right関数・Left関数は文字列中の文字を切り出す

vbamideyecstch

エクセルVBAで文字列操作は、コード作成の中でも重要な部分です。
Mid・Right・Left関数は、その操作の中で重要な働きをする関数です。
文字列を切り出すこの関数の基本部分を説明します。

こんにちは、じゅんぱ店長(@junpa33)です。

今回は、データの中から一部の文字列を取り出すMid関数・Right関数・Left関数についてです。

どういった時に使えるかというと、たとえば

一行の住所データを「都道府県」「市区町村」「番地」とそれぞれ分解して各セルに分解表示させたい、という時などです。

Mid関数・Right関数・Left関数の文字列操作の基本

vbamidp007

Mid関数・Right関数・Left関数のはたらき

  • Mid 関数は、
    「操作したい文字列」の「指定した文字位置」から「求める文字数分」の「希望した文字列」を切り取ります。
  • Right 関数は、
    「操作したい文字列」の文字列の最後から「求める文字数分」の「希望した文字列」を切り取ります。
  • Left 関数は、
    「操作したい文字列」の文字列の先頭から「求める文字数分」の「希望した文字列」を切り取ります。

Mid関数・Right関数・Left関数の構文

Mid関数の構文

  • Mid (「操作したい文字列」,「指定した 開始文字位置」,「求める 文字数」)

「求める 文字数」で切り取る文字数を指定します。省略すると文字列の最後の文字まで切り取ります。

Right関数の構文

  • Right(「操作したい文字列」,「求める 文字数」)

操作したい文字列の文字列の最後から「求める 文字数」で切り取る文字数を指定します。

Left関数の構文

Left (「操作したい文字列」,「求める 文字数」)

操作したい文字列の文字列の先頭から「求める 文字数」で切り取る文字数を指定します。

Mid関数・Right関数・Left関数の使用例

vbamidp008

この関数の使い方を、例題を使って説明していきます。

例題1 住所データから文字を切り出し

例題1 住所データを加工する 

一番ポピュラーな文字列の操作として、

位置行表示された住所リストを都道府県と市区町村、番地に分解します。

「〒100-0014 東京都千代田区永田町1丁目7−1」国会議事堂の住所です。

  • 先頭の「〒100-0014 」は10文字数です。
  • 先頭から「都」までは13文字数
  • 先頭から「区」までは17文字数
  • 全体の文字数は26文字数

グーグルマップの別の住所データを試されるときは、それぞれの文字数を調整してください。

変数名は、

ADD・・・グーグルマップの住所データ

Post・・・郵便番号

Pre・・・都道府県

Muni・・・市区町村

Addr・・・番地

参考記事

Mid関数を利用する

VBA
Sub 住所データ分解Mid()
'変数ADDは文字列型で宣言する
    Dim ADD As String
    Dim Pre As String, Muni As String, Addr As String
'インプットボックスを使って入力する
        ADD = InputBox("グーグルマップの住所データを入力", _
            Title:="GoogleMap住所")
'Mid関数で各部分を切り出しします
        Pre = Mid(ADD, 11, 3)
        Muni = Mid(ADD, 14, 4)
        Addr = Mid(ADD, 18, 26)
        MsgBox "都道府県は: " & Pre & vbCrLf & "市区町村は: " _
            & Muni & vbCrLf & "番地: " & Addr
End Sub
vbamid003
vbamid004

Left関数を利用する

VBA
Sub 住所データ分解Left()
'変数ADDは文字列型で宣言する
    Dim ADD As String
    Dim Post As String
'インプットボックスを使って入力する
        ADD = InputBox("グーグルマップの住所データを入力", _
            Title:="GoogleMap住所")
'Mid関数で各部分を切り出しします
        Post = Left(ADD, 10)
        MsgBox "郵便番号は: " & Post
End Sub
vbamid005

Right関数を利用する

VBA
Sub 住所データ分解Right()
'変数は文字列型で宣言する
    Dim ADD As String
    Dim Addr As String
'インプットボックスを使って入力する
        ADD = InputBox("グーグルマップの住所データを入力", _
            Title:="GoogleMap住所")
'Right関数で部分を切り出しします
        Addr = Right(ADD, 9)
        MsgBox "番地は: " & Addr
End Sub
vbamid006

文字列の切り出し位置や切り出す文字数を変化させてマルチ対応できるようにするには、条件分岐などもう少し複雑なコード組み立てを行うことになります。

例題2 数字列からデータを切り出し

例題2 下段バーコードの中から価格データを取り出す

商品に付いているバーコードには、いろいろな情報が入っています。

その中で、書籍についている、ISBNコードについて考えます。

書籍のバーコードは2段式になっています。いずれも13桁の数字が刻印されています。

ザックリ言って、上段がその本のID番号、下段が価格情報になっています。

この例は文字列の切り出し位置があらかじめ決まっている場合です。

Mid関数を利用する

VBA
Sub ISBN価格データ切り取り()
'変数uISBNは文字列型で宣言する
    Dim uISBN As String, Pri As Long
'インプットボックスを使って入力する
        uISBN = InputBox("価格ISBNを入力", Title:="価格ISBN")
'Mid関数で先頭から文字8個目から5桁を切り出す
'Val関数で文字列型の数値を数値型に戻しておく
        Pri = Val(Mid(uISBN, 8, 5))
        MsgBox "価格ISBN " & uISBN & vbCrLf & " 本体価格\ " & Pri
End Sub
vbamid001
vbamid002

注意ポイント

この例では、Mid関数の記述方法以外にも注意点があります。

  • 操作したい文字列」が数値である。ただし桁数が11桁以上であるため整数型では扱えない。
  • 切り出した数値が価格など、四則演算を必要とする場合は、Val関数で文字列型から数値型に戻しておく。

参考記事

  • Val関数についてはこの記事を参考にしてください。
VBAValeyecatch Val関数はデータ型不一致の解決策。文字列型から数値型へ

Mid関数・Right関数・Left関数で文字列の切り出し まとめ

vbamidp009

これら、Mid関数・Right関数・Left関数は、

エクセルVBAで、文字列操作に関する関数の中でもかなり重要な関数です。

今回は基本操作の部分の説明をしました。

皆さんご自分それぞれで、「あーしたい、こーしたい、それ出来ないか?」などと

コードを組み立てていじってみると新たな発見があると思います。

この基本部分は、是非覚えておきましょう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min