- ベストアンサー
エクセルでA列文字中にあるメールアドレスのみをB列に書き出す。
タイトル通りの質問なのですが、 A列に5行程度の文字列があり、その中から<aaa@bbb.co.jp>となっているメールアドレスのみをB列に抽出したいのですが、いい方法を教えて頂けないでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
メールアドレスを検出するわけではありませんが、もしメールアドレスが< >で囲まれていて、かつ、< >の記号が文章の中でメールアドレスの部分のみに使われているか、他に使われていてもメールアドレスよりも後に使われているのであれば、次の方法を試してみて下さい。 A列にA1から文章が入力されているとして、B1に =MID(A1,FIND("<",A1,1)+1,FIND(">",A1,1)-FIND("<",A1,1)-1) と入力して、以下コピーとします。 B列に< >の中のアドレスが表示されると思います。 なお、< >も含めて抜き出したいのであれば、 =MID(A1,FIND("<",A1,1),FIND(">",A1,1)-FIND("<",A1,1)+1) として下さい。
その他の回答 (2)
B列に表示したいとのことですが、1個の式で出す方法を思いつかないので、B列とC列に式を入れ、C列に結果を表示する方法を書きます。後でB列は非表示にしておくと良いと思います。 データがA1からA5に入っているとして A列 B列 C列 データ =SEARCH("@",A1,1) =IF(COUNT(B1)=1,A1,"") B1とC1に上記の式を入れ、それぞれ5行目までコピーします。 式の意味はB1でアットマークが何文字目か出し、メールアドレスならば数値がでる。C1ではB1に数値が1個あればA1のデータを、数値が無ければ空白を。やってみて下さい。
お礼
回答ありがとうございます。 今回はNO1の方に教えていただいた方法でやることになりましたが、 1628taniさんの方法もちょっとチャレンジしてみたいと思います。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 ユーザー定義関数で考えてみました。 こちらは、<...> という区切り文字がなくても、取り出せます。 Alt + F11 で、Visual Basic Editor 画面を開けたら、 メニューの[挿入]-[標準モジュール] をクリックして、白い画面が開いたなら、以下のコードを貼り付けます。貼り付けたら、Alt + F11 で、元の画面に戻ります。 Function PickupADR(文字列 As Variant) Dim re As RegExp Dim Matches As Object, M As Object Dim i As Long, buf As Variant Set re = CreateObject("VBScript.RegExp") With re .Pattern = "\w+@[\w\.]+" 'メールアドレスのパターン .Global = True If .test(文字列) Then Set Matches = .Execute(文字列) If Matches.Count = 1 Then PickupADR = Matches(0).Value ElseIf Matches.Count > 1 Then ReDim buf(0 To Matches.Count) For Each M In Matches buf(i) = M.Value i = i + 1 Next PickupADR = buf End If End If End With End Function この関数は、一般的な関数のように使えますが、少し変わった特徴があります。 =PICKUPADR(A1) とすれば、メールアドレスが取り出せますが、ひとつのセルに2つ以上入っている場合は、 =INDEX(PICKUPADR($A$1),1,COLUMN(A1)) として、フィルハンドル・コピーで、右にスライドすれば、次に入っているメールアドレスも取り出せます。
お礼
回答ありがとうございました。 私には高度すぎてよくわかりませんでした…。 すみません。時間のある時に確認してみたいと思います。
お礼
回答ありがとうございました。 うまくいきました!