バージョン:マイクロソフト365
エクセルVBAでメールの@マークの後ろの部分(ドメイン)を抜き出し取得してみたいと思います。
それではいってみましょう(^^♪
Menu
具体的に何をすればいいか?
手順
・メールの@マークの場所が文字列の先頭から何番目かを探します。
・@マークの位置番号がわかったら、その位置番号の文字の1文字後ろから最後の文字までを抜き出します。
この2つのみです\(^^)/
メールの@マークの場所が文字列の先頭から何番目かを探します(instr)
instr関数は指定した文字の位置番号を返します。
構文
InStr(対象文字, 検索文字)
https://dailyrecords.blog/archives/9104
サンプル
@マークが文字の先頭から何番目かを調べます。
1 | InStr("1528654@yahoo.co.jp", "@") |
確認
Debug.Printでイミディエイトウィンドウに表示させてみます。
1 | Debug.Print InStr("1528654@yahoo.co.jp", "@") |
結果
8
@マークの位置が文字の先頭から数えて8番目ということが分かりました。
この8を次で解説するMid関数で使用します。
@マークの次の文字から最後の文字まで全て抜き出す(Mid)
Mid関数は指定した開始位置から文字を抜き出します。
構文
Mid(対象文字, 開始位置)
https://dailyrecords.blog/archives/9106
サンプル
1 | Mid("1528654@yahoo.co.jp", 8 + 1) |
実際は上記の第2引数の開始位置の8の部分に、先ほど作成したのInstrをコピペして挿入します。
+1してるのは@マークの次の文字から取得するからです。
確認
Debug.Printでイミディエイトウィンドウに表示させてみます。
1 | Debug.Print Mid("1528654@yahoo.co.jp", 8 + 1) |
結果
yahoo.co.jp
VBAサンプル
1 2 3 4 5 6 7 8 9 10 11 | Sub アットマークから後ろ全部抜出す() '変数 Dim str As String Dim inNum As Integer str = "1528654@yahoo.co.jp" '1528654@yahoo.co.jpを変数strに挿入 Debug.Print InStr(str, "@") '【結果】8 inNum = InStr(str, "@") '8を変数inNumに挿入 Debug.Print Mid(str, inNum + 1) '【結果】yahoo.co.jp End Sub |
イミディエイトを表示させるには
Split関数で取得
Split関数でも簡単に取得できるので是非一読してみてください!
こっちの方が簡単かもしれません(^o^)o
まとめ
慣れないうちは少々難しいですが毎日眺めてたら嫌でも覚えちゃいますから最初はわからなくてもこんなもんなんだで大丈夫ですからね!
以上です(^^)