エクセル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関数の使用例
この関数の使い方を、例題を使って説明していきます。
例題1 住所データから文字を切り出し
一番ポピュラーな文字列の操作として、
位置行表示された住所リストを都道府県と市区町村、番地に分解します。
「〒100-0014 東京都千代田区永田町1丁目7−1」国会議事堂の住所です。
- 先頭の「〒100-0014 」は10文字数です。
- 先頭から「都」までは13文字数
- 先頭から「区」までは17文字数
- 全体の文字数は26文字数
グーグルマップの別の住所データを試されるときは、それぞれの文字数を調整してください。
変数名は、
ADD・・・グーグルマップの住所データ
Post・・・郵便番号
Pre・・・都道府県
Muni・・・市区町村
Addr・・・番地
- InputBoxついてはこちらの記事を参考にしてください。
- MsgBoxの使い方について詳しくはこちらです。
Mid関数を利用する
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
Left関数を利用する
Sub 住所データ分解Left()
'変数ADDは文字列型で宣言する
Dim ADD As String
Dim Post As String
'インプットボックスを使って入力する
ADD = InputBox("グーグルマップの住所データを入力", _
Title:="GoogleMap住所")
'Mid関数で各部分を切り出しします
Post = Left(ADD, 10)
MsgBox "郵便番号は: " & Post
End Sub
Right関数を利用する
Sub 住所データ分解Right()
'変数は文字列型で宣言する
Dim ADD As String
Dim Addr As String
'インプットボックスを使って入力する
ADD = InputBox("グーグルマップの住所データを入力", _
Title:="GoogleMap住所")
'Right関数で部分を切り出しします
Addr = Right(ADD, 9)
MsgBox "番地は: " & Addr
End Sub
文字列の切り出し位置や切り出す文字数を変化させてマルチ対応できるようにするには、条件分岐などもう少し複雑なコード組み立てを行うことになります。
例題2 数字列からデータを切り出し
商品に付いているバーコードには、いろいろな情報が入っています。
その中で、書籍についている、ISBNコードについて考えます。
書籍のバーコードは2段式になっています。いずれも13桁の数字が刻印されています。
ザックリ言って、上段がその本のID番号、下段が価格情報になっています。
この例は文字列の切り出し位置があらかじめ決まっている場合です。
Mid関数を利用する
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
注意ポイント
この例では、Mid関数の記述方法以外にも注意点があります。
- 「操作したい文字列」が数値である。ただし桁数が11桁以上であるため整数型では扱えない。
- 切り出した数値が価格など、四則演算を必要とする場合は、Val関数で文字列型から数値型に戻しておく。
- Val関数についてはこの記事を参考にしてください。
Mid関数・Right関数・Left関数で文字列の切り出し まとめ
これら、Mid関数・Right関数・Left関数は、
エクセルVBAで、文字列操作に関する関数の中でもかなり重要な関数です。
今回は基本操作の部分の説明をしました。
皆さんご自分それぞれで、「あーしたい、こーしたい、それ出来ないか?」などと
コードを組み立てていじってみると新たな発見があると思います。
この基本部分は、是非覚えておきましょう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。