プロが教えるわが家の防犯対策術!

タイトル通りの質問なのですが、

A列に5行程度の文字列があり、その中から<aaa@bbb.co.jp>となっているメールアドレスのみをB列に抽出したいのですが、いい方法を教えて頂けないでしょうか。

A 回答 (3件)

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のデータを、数値が無ければ空白を。やってみて下さい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
今回はNO1の方に教えていただいた方法でやることになりましたが、
1628taniさんの方法もちょっとチャレンジしてみたいと思います。

お礼日時:2005/08/07 07:52

こんばんは。



ユーザー定義関数で考えてみました。
こちらは、<...> という区切り文字がなくても、取り出せます。

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))

として、フィルハンドル・コピーで、右にスライドすれば、次に入っているメールアドレスも取り出せます。
    • good
    • 1
この回答へのお礼

回答ありがとうございました。
私には高度すぎてよくわかりませんでした…。
すみません。時間のある時に確認してみたいと思います。

お礼日時:2005/08/07 07:51

メールアドレスを検出するわけではありませんが、もしメールアドレスが< >で囲まれていて、かつ、< >の記号が文章の中でメールアドレスの部分のみに使われているか、他に使われていてもメールアドレスよりも後に使われているのであれば、次の方法を試してみて下さい。



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)
として下さい。
    • good
    • 12
この回答へのお礼

回答ありがとうございました。
うまくいきました!

お礼日時:2005/08/07 07:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A