• ベストアンサー

エクセルでA列文字中にあるメールアドレスのみをB列に書き出す。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.1

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

yuki_usa
質問者

お礼

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

その他の回答 (2)

noname#24921
noname#24921
回答No.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のデータを、数値が無ければ空白を。やってみて下さい。

yuki_usa
質問者

お礼

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

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 ユーザー定義関数で考えてみました。 こちらは、<...> という区切り文字がなくても、取り出せます。 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)) として、フィルハンドル・コピーで、右にスライドすれば、次に入っているメールアドレスも取り出せます。

yuki_usa
質問者

お礼

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

関連するQ&A

  • エクセルの文字処理

    以前に同じ様な質問があったかも知れませんが、探しきれなかったので教えてください。 A1~A4の4つのセルに以下のスペースが入った文字列が入っていた場合 A1|AAA A2|AAA BBB A3|AAA BBB CCC A4|AAA BBB CCC DDD    A   B   C   D  1|    AAA 2|AAA BBB 3|AAA BBB CCC 4|AAA BBB CCC DDD という具合にしたいのです。 条件は  ・セル内にスペースで区切られない文字列があった場合には、B列に入れる  ・それ以外はスペースで区切って、A列B列C列D列に入れる  ・文字数は3文字固定ではなく全角半角が混在 以上です。すいません宜しく願いします。

  • エクセル 3つの文字列と空白以外の場合に隣のセルが空白ではない時カウントする

    下記のような状況で、A列には"AAA","BBB","CCC"と空白の他に 未知の文字列(A??やB??)があります。 この未知の文字列の時に、Bに文字列が入っている数をカウントする方法はありますでしょうか。 下記ではB4とB6をカウントします。    A   B 1  AAA  xxxxxx 2  BBB 3  CCC  xxxxxx 4  A??  xxxxxx 5  A?? 6  B??  xxxxxx 7 元データが1000行以上あるのでなんとか算出する方法が知りたいです。 よろしくお願いします。

  • EXCEL2010で同じ文字列のセルの数を数え・・

    EXCEL2010で一つのワークシート上に様々な文字列が散らばっているとします。 この中でたとえばAAAという文字列が何個あるかを抽出してAAA 1、またBBBという文字列が何個あるかを抽出してBBB 3というように表示させたいのですが、方法をご存じの方、よろしくお願いいたします。VBAを使わずに解決して下さると嬉しいです。 ちなみに、COUNTIFなどの関数は、あらかじめ探したい文字列が分かっている場合には使えますが、本件はそうではなく、ワークシート上にどんな文字列があるのか一目ではわからないくらいたくさんあります。 理想は、その文字列が入っている全てのセルを範囲選択しておいて、何か関数で抽出させ、 AAA 3 ABC 19 BBB 21 DCF 3 などといったリストが作成されることです。 よろしくお願いいたします。

  • エクセルの関数(文字列内で一致探す)が分かりません

    エクセル関数について質問です。 あるセルに入っている文字(メールアドレス。各行ごとにデータが入っている)が、 別場所のデータ範囲内(一つのセルに複数のアドレスが入っている)に、 一致するものがあるかないかを調べたいのです。 (例)  <文字データ> C列2行目の文字→ aiu@aaa.co.jp C列3行目の文字→ kaki@sss.com  <別場所のデータ範囲: A列10行~A列13行> A列10行目データ: sasi@bbb.net aiu@aaa.co.jp A列11行目データ: opff@kikig.co.jp asiaaaa@eoe.com arara@rara.com A列12行目データ: aka@ss.com kaki@sss.com saa@sate.com   ★文字データの「メールアドレス」が、  別場所のデータ範囲内に一致するものがあるかどうかを調べ、  一致するものがあれば、メールアドレス横に ○(マル)と表示される形にできればベストです。  別場所というのは、同じファイル内の別シートという意味です。  これについては、コピーして、同シートに移動させることは可能です。 どうぞよろしくお願いします。

  • EXCELエクセルで、複数の文字列で連続した検索をする方法

    データの比較、検索に関する質問です。 どうぞよろしく願い致します。 2種類のデータがあり、 列Aはメールを送信する顧客のメールアドレスのリスト、 列Bはメールを送信してはいけないメールアドレスのリストです。 列Aに列Bの各データで検索をかけ、 列Aの中に列Bのデータが含まれていないか(=送ってはいけないアドレスが含まれていないか) を調べたいのです。 つまり、 列Bの1行目の文字列で列Aを検索 ↓ 列Bの2行目の文字列で列Aを検索 ↓ 列Bの3行目の文字列で列Aを検索 ・ ・ ・ このようなことを自動化したいのですが、 方法はないでしょうか? WEB上を検索したのですが、欲しい情報は見つかりませんでした。 初歩的なマクロは理解できます。 どなかたご教授頂ければ幸いです。

  • エクセルVBAでの文字列抽出

    エクセルVBAで文字列を検索して、検索した文字列を他のセルへ出力する方法がわかる方法を探しております。状況を図で説明すると、 A1セル:aaa\bbb\item1\ddd A2セル:aaa\bbb\ccc\item2\ddd A3セル:aaa\bbb\ccc\ddd\item3\eee このような状態からitemを検索して、B1セルに B1セル:item1 B2セル:item2 B3セル:item3 と表示させたいです。エクセルVBA初心者な者でRegExpを使うのかな、というところまではたどり着きましたが、そこから先にすすめません。 何か良い方法をご存知の方、教えていただきたいです。よろしくお願いいたします。

  • エクセルのA列とB列にあるデーターのうち、同じデーターを抽出する

     A列  B列 a1111 z2222 *A列にもB列にも500件ほどの a2222 y3333  メールアドレスが入っています。c3333 a1111  ダブっているアドレスもあります。  ・   ・   ダブっているアドレスだけを抽出  ・   ・   したいのですが?  ・   ・   宜しくお願いします。  

  • エクセルの文字列の抽出方法について

    ★★エクセルの文字列の抽出方法について★★ 下記の「対象セルの内容」のような感じで1つのセルの中に複数行の文字列が入っているのですが、 下から3行とか4行とかを指定して文字列を抽出したいと考えています。 ■対象セルの内容 [改行] [改行] [改行] a/b/r1.php[改行] a/b/r2.php[改行] a/b/r3.php[改行] a/b/r4.php ■抽出したい値 a/b/r2.php[改行] a/b/r3.php[改行] a/b/r4.php 何かしらうまい方法はないでしょうか。 ご教授なにとぞよろしくお願いいたします。

  • エクセル 文字列から数字だけを抽出

    エクセル2016の操作について教えて下さい。 セル内の文字列から数字だけを抽出したいです。 例えばAの列にこのような文字列が入っているとします。 高度5km 高度10.1km この中の数字だけを取り出して隣のB列の同じ行に数字だけを表示させる方法がありましたら教えて下さい。 宜しくお願いします。

  • エクセルでA列B列C列の重複するレコードのみを表示

    エクセルのA列とB列とC列で重複するレコードのみを抽出して別の列に表示させたい。 エクセルのA列とB列とC列にそれぞれ1000行くらいのデータがあります。 それぞれの列内には重複レコードがあります。 この条件の中で 「A列とB列とC列に重複するデータすべて」 を抽出したいのですが、どんな方法がありますか。 抽出されたデータで重複レコードの場合は1件のみで表示したいです。 よろしくお願いします。 例   A   B   C   抽出  1-001-002--002--002 2-002-002--005--007 3-003-007--007--008 4-007-008--008--011 5-008-008--010 6-008-010--011 7-011-011--012 8-013-014--013

専門家に質問してみよう