「エクセルvbaのmid関数である文字数から最後の文字までという指定はできるのか」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
VBA(Visual Basic for Applications)のMid関数の使い方を調べている方による検索です。
「エクセルvbaのmid関数である文字数から最後の文字までという指定はできるのか」
という検索はタイプミスで本当は
「エクセルvbaのmid関数である文字から最後の文字までという指定はできるのか」
という検索をしたかったのではないかと想像しています。
Mid関数の基本
まずは、
「エクセルvbaのmid関数である文字数から最後の文字までという指定はできるのか」
という検索をそのままの疑問とした場合の回答から。
Sub Mid関数の基本()
Dim txt As String
txt = Range("A1").Value
MsgBox Mid(txt, 5)
End Sub
例えば、A1セルに「ito@example.com」という文字列が入力されているときに、上記のマクロを実行するとメッセージボックスには
「example.com」
と表示されます。
Mid関数は、第1引数に指定された文字列から、第2引数に指定された数値以降の文字列を返す関数です。
「Mid(txt, 5)」
で、変数・txtに格納されている文字列から、5文字目以降を取得することができます。
ここで、
「Mid(txt, 5, 7)」
と第3引数まで指定したときには、第3引数として指定された「7」文字「example」という文字列が返されます。
「エクセルvbaのmid関数である文字数から最後の文字までという指定はできるのか」
という疑問については、Mid関数で第2引数までを指定して、第3引数を省略してやればいいわけです。
Mid関数で指定した文字以降を取得
「エクセルvbaのmid関数である文字数から最後の文字までという指定はできるのか」
が
「エクセルvbaのmid関数である文字から最後の文字までという指定はできるのか」
のタイプミスだった場合の回答です。
例えば
「ito@example.com」
「kiyoto@example.edu」
のような文字列があったときに、「@」より後ろの文字列を取得したいという要望が実務ではよく出ます。
そのようなときには、Mid関数に、文字列から文字を探して文字の位置を返すInStr関数を組み合わせます。
Sub Mid関数である文字以降を取得する()
Dim txt As String
txt = Range("A1").Value
MsgBox Mid(txt, InStr(txt, "@") + 1)
End Sub
A1セルに
「ito@example.com」
と入力されているときに上記のマクロを実行すると
「example.com」
がメッセージボックスに表示され
「kiyoto@example.edu」
と入力されていれば
「example.edu」
が表示されます。
いずれも「@」より後ろの文字列がメッセージボックスに表示されます。
「InStr(txt, "@")」
という数式は、変数・txtに格納されている文字列から「@」を探して、みつかった文字位置を返しますから、
「ito@example.com」
なら「4」
「kiyoto@example.edu」
なら「7」
が返されます。
「@」より後ろの文字列を取得したいので「InStr(txt, "@")」に「+1」した「InStr(txt, "@") + 1」を、Mid関数の第2引数に指定したのが、
「Mid(txt, InStr(txt, "@") + 1)」
の意味です。
ワークシート関数のFIND関数に似ているのが、VBAのInStr関数です。
Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAで指定した文字以降を取得する-Mid・InStr関数
- Newer:変更履歴のすべての変更を反映するWordマクロ
- Older:新しいブログ-第21回東京ブロガーミートアップ #tbmu
TrackBack:4
- TrackBack URL
- Name.RefersToからシート名だけを取得する from インストラクターのネタ帳
- Excel(エクセル)VBAで、名前の参照先セルを取得するName.RefersToから、シート名だけを取得するコードをご紹介しています。
- VBAで右から・後ろから文字位置を取得する-InStrRev関数・StrReverse関数 from インストラクターのネタ帳
- Excel(エクセル)VBAで、ある文字列から指定した文字列を右から・後ろから探す方法を2つご紹介しています。住所データの分割などに使える方法です。
- 未保存のブックをアクティブにするExcelマクロ from インストラクターのネタ帳
- ブック名に「.」が含まれているかどうかで、保存されていないブックを探してアクティブにするExcelマクロを作れます。
- Range.Addressから行番号を取得する from インストラクターのネタ帳
- Range.Rowプロパティでセルの行番号を取得するのが簡単ですが、Range.Addressプロパティから強引に行番号を取得することもできます。