• ベストアンサー
  • すぐに回答を!

Excel Accessにてこんなことできますか??

  • 質問No.5631568
  • 閲覧数46
  • ありがとう数4
  • 回答数3

お礼率 18% (13/70)

以前にも似たようなことをお聞きしましたが、別対応しないといけなくなりました。宜しくお願いします。

<前提>
・Excelの1セル(Acessも同様)に、複数のEメールアドレスがある。
・複数のEメールアドレスの場合、カンマにて区切られている。但し、そのEメールアドレスはアドレス帳に登録した情報のため、名前にカンマ登録していたら、名前にもカンマが入っている。

(例)
山田隆<takashi.yamada@xxxx.xxxx>,koike,taka<taka_koike@xxxx.xx.xx>,~(以下後続アドレス)

<行いたいこと>
最終的には、@以降のドメインのみを取得する。

<悩んでいること>
アドレスが1つなら区切り文字を@にして分解すれば、決まった列に@以降の文字列がセットされるが、複数あると、@以降の文字列のセットがバラバラになってしまいます。

そこで、まず、複数のアドレスがあった場合、1セルに1アドレスになるよう何かしら関数などを使って行いたいのですが(私はカンマが1アドレスの区切りとなるので、まず、カンマにて分解しようとしたのですが、上記のように名前にもカンマがある場合があり、一定の法則がないため断念した)、良い方法ありますか。※何千件もあるのでハンド対応は厳しい

そもそも、1セルに1アドレスに設定する必要性がない方法などありましたら、教えてください。

・条件
excel,access ともに2002 or 3?

宜しくお願いします。

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 65% (358/549)

VBAを使用すれば可能だと思います。
1セル1アドレスにするには、"," ではなく ">," を区切りとみなしてやればどうでしょうか。
VBAでSplit関数が使用できたかどうか記憶が定かではないのですが、Split関数が使用できなければ、
(1)InStr関数を使用して ">," を探す。
(2)見つかれば、それより前の文字(Left関数を使用)を元のセルにセットし、">," より後ろの文字(Mid関数を使用)を一つ下のセルにセット
(3)処理対象を一つ下のセルに移し、(1)、(2)を、 ">,"が見つからなくなるまで繰り返す。
という処理で可能だと思います。

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 41% (79/190)

カンマで区切られた全てのアドレスが、
 ****<***@***.***>
というように<>で囲まれていればExcelで以下のようにできるかと思います。
(名前の***の部分はあっても無くてもいい)

※1セルにというのは、1つのセルにしかリストはないという認識でやってますが、
 そういうセルが複数ある場合も、以下の応用で行けると思います。

※手元にあるのが、Excel2007の英語版のみなので、メニュー名等にいくらか間違いがあると思います。

<手順>

1.置換にて「>,」を「%」に変換する。
  (%でなくてもいいですが、アドレスリストに使われていない1文字にしてください。
   逆に%が使われていたら別の文字にしてください。)
2.そのセルのある列を選択して「データ」→「区切り文字」を選択し、
  「区切り文字」を「%」に指定して、実行。
  (この段階で、1セル1アドレスになったはず)
3.その行を選択して、コピー
4.別シートのセル「A1」上で「形式を指定してペースト」を選び、
  「列と行を入れ替える」でペースト
5.列Aを選択して、再度「データ」→「区切り文字」を選択し、
  「区切り文字」を「@」に指定して、実行。

で、列Bにほしいリストができたのでは?と思います。
補足コメント
winee

お礼率 18% (13/70)

ご回答ありがとうございます。

確かに、ご教示していただいた方法では可能です。
ただ、1セルに複数のアドレスが含まれているデータが、2千行ぐらいあるので、その方法では手間がかかります。

ルーティン的にはできないでしょうか。
投稿日時:2010/02/07 16:28
  • 回答No.2
VBAを使用して、正規表現を利用すれば、できるでしょう。
http://codezine.jp/article/detail/1655
正規表現の利用方法が判らなければ、その状況を説明した、新しい質問をすることをお奨めします。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ