文字列の内容 Mid関数

Mid関数は文字列の指定した位置から指定した文字数を取得する関数です。

簡単に言うと文字の抜き取りです。

Mid関数の構文

Mid( String , Start)

Mid( 文字列 , 文字列の指定した位置 )

Mid( String , Start , Length)

Mid( 文字列 , 文字列の指定した位置 , 取得したい文字数 )

Mid関数の使用例

・Mid関数内に文字列を直接設定

・Mid関数内に文字列がないの場合

・文字列を変数に設定

・Mid関数内で文字列の結合

・セルから文字列を取得して隣のセルに設定

繰り返し処理(for文)

・繰り返し処理(Do While文)

の内容で説明していきます。

Mid関数内に文字列を直接設定

Sub Mid01()
    
    MsgBox Mid("abcde", 3)

End Sub

取得したい文字数を指定しなければ3文字目から末尾まで表示されます。

Sub Mid02()
    
    MsgBox Mid("abcde", 3, 2)

End Sub

取得したい文字数を2に指定した場合は3文字目から2文字表示されます。

Mid関数内に文字列がないの場合

Sub Mid1()
    
    MsgBox Mid("", 3)

End Sub

文字列がないためメッセージボックス内には何も表示されません。

文字列を変数に設定

Sub Mid2()
    Dim str As String
    str = "abcde"
    
    MsgBox Mid(str, 3, 2)

End Sub

str = abcdeなので3文字目から2文字までのcdが表示されます。

Mid関数内で文字列の結合

Sub Mid3()
    Dim str As String
    str = "abcde"
    
    MsgBox Mid(str + "fgh", 7, 2)

End Sub

Mid関数の文字列は”abcde”+”fgh”=”abcdefgh”になります。

そこから7文字目から2文字なのでghで表示されます。

問題1

以下の内容を実行したときにメッセージボックスに表示される内容はどの様になりますか。

Sub Mid4()
    Dim str As String
    str = "あいうえお"
    
    MsgBox Mid(str, 2, 2)

End Sub

問題2

以下の内容を実行したときにメッセージボックスに表示される内容はどの様になりますか。

Sub Mid5()
    Dim str1, str2 As String
    str1 = "あいうえお"
    str2 = "かきくけこ"
    
    MsgBox Mid(str1 + str2, 2 + 5, 2 + 1)

End Sub

問題1の答え

str = “あいうえお”でしたので2文字目から2文字ですので”いう”が表示されます。

問題2の答え

Mid(str1 + str2, 2 + 5, 2 + 1)

Mid(“あいうえおかきくけこ”, 7 , 3 )になるため”きくけ”が表示されます。

セルから文字列を取得して隣のセルに設定

B2から文字列を取得してC2に設定します。

Sub Mid6()
    Dim str As String
    str = Range("B2").Value
    
    Range("C2").Value = Mid(str, 3, 2)

End Sub

処理の実行

cdの値がC2のセルに設定されました。

同様の処理内容

Mid関数内にRange(“B2”)を設定する。

Sub Mid7()
    
    Range("C2").Value = Mid(Range("B2").Value, 3, 2)

End Sub

Rangeではなく、Cellsで設定する。

Sub Mid8()
    Dim str As String
    str = Cells(2, 2)
    
    Cells(2, 3) = Mid(str, 3, 2)

End Sub

上記、2つの処理でもcdの値がC2のセルに設定されます。

Cellsのイメージ

繰り返し処理(for文)

B列に取得したい文字列が8行入力されています。

これを繰り返し処理でC列に3文字目から2文字まで取得して表示させます。

処理内容

Sub Mid9()
    Dim str As String
    Dim i As Integer
    
    For i = 1 To 8
        str = Cells(i + 1, 2)
    
        Cells(i + 1, 3) = Mid(str, 3, 2)
    Next

End Sub

処理の結果

8行分3文字目から2文字まで取得できました。

繰り返し処理(Do While文)

for文ではFor i = 1 To 8と記載して8回処理をしたら終了する設定にしました。

Do While文では終了条件で繰り返し処理を終了させます。

終了条件はB列が空白になるまで繰り返し処理を行います。

つまりB10まで繰り返し処理を行います。

処理内容

Sub Mid10()
    Dim str As String
    Dim i As Integer
    
    i = 1
    
    Do While Cells(i + 1, 2) <> ""
        str = Cells(i + 1, 2)
    
        Cells(i + 1, 3) = Mid(str, 3, 2)
        i = i + 1  'この処理が抜けると無限ループになります。

    Loop

End Sub

Do While Cells(i + 1, 2) <> “”で空白でない限り処理を繰り返します。

処理の結果

for文と結果は変わりませんがB列が空白でない限り処理が実行されます。

今回はMid関数を使用した使用例を複数記載致しました。

皆様の参考になれば幸いです。

Published by

不明 のアバター

yuuya

 現在フリーランスとして仕事を行っております。 新卒でIT企業に入社して、某ECサイトの開発、某銀行の滞納者管理システムの開発、某携帯キャリアのアクセス位置制御システムの開発などの色々なシステム開発に携わって参りました。 体調を崩して他業種に転職をしましたがIT技術を生かし、業務の効率化を提案して2時間かかる作業を2分で終らせられる様に作業の自動化などを行ってきました。  私は働きすぎて体を壊したので私の知識で、少しでも皆様の帰宅時間を速める事が出来るなら幸いです。

コメントを残す