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

vbamideyecstch

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

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

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

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

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

「関数リファレンス」を調べる

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

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

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

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

Mid関数の構文

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

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

Right関数の構文

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

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

Left関数の構文

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

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

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

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

住所データを加工する

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

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

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

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

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

変数名は、

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

Post・・・郵便番号

Pre・・・都道府県

Muni・・・市区町村

Addr・・・番地

MEMO

InputBoxついてはこちらの記事を参考にしてください。

vbainputboxeyecatch 2つのインプットボックス。関数とメソッド、特徴を生かした使い分け

MsgBoxの使い方について詳しくはこちらです。

vbamsgboxeyecatch メッセージボックス MsgBox実際の使い方を最速に理解

Mid関数を利用する

コード

Sub 住所データ分解Mid()

'変数は文字列型で宣言する
    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関数を利用する

コード

Sub 住所データ分解Left()

'変数は文字列型で宣言する
    Dim ADD As String
    Dim Post As String

'インプットボックスを使って入力する
        ADD = InputBox("グーグルマップの住所データを入力", Title:="GoogleMap住所")
        
'Left関数で部分を切り出しします
        Post = Left(ADD, 10)
        
        MsgBox "郵便番号は: " & Post

End Sub

vbamid005

Right関数を利用する

コード

Sub 住所データ分解Right()

'変数は文字列型で宣言する
    Dim ADD As String
    Dim Addr As String

'インプットボックスを使って入力する
        ADD = InputBox("グーグルマップの住所データを入力", Title:="GoogleMap住所")
        
'Right関数で部分を切り出しします
        Addr = Right(ADD, 9)
        
        MsgBox "番地は: " & Addr

End Sub

vbamid006

MEMO
字列の切り出し位置や切り出す文字数を変化させてマルチ対応できるようにするには、

条件分岐などもう少し複雑なコード組み立てを行うことになります。

Mid関数 下段バーコードの中から価格データを取り出す

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

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

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

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

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

コード

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関数で文字列型から数値型に戻しておく。

MEMO

Val関数についてはこの記事を参考にしてください。

VBAValeyecatch Val関数の使い方はデータ型不一致の解決策。値を文字列型から数値型へ

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

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

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

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

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

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

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

短期間でエクセルVBAの独学習得を目指したいなら

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

独習のための大切な7つのポイントは、上記記事にて解説しています。

重要ワード

独習によるVBA習得のキーワードは、

出来るだけ多くの実例に触れること!

です。

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

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

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

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