• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAの初心者です。)

VBA初心者の方へ!セル内の複数メールアドレスを切り分ける方法とは?

このQ&Aのポイント
  • VBA初心者の方へ!セル内の複数メールアドレスを切り分ける方法を解説します。
  • セル内に複数のメールアドレスが入力されている場合に、「,」以下を一行下に切り取る方法をご紹介します。
  • また、メールアドレスが3つや4つ入力されている場合の対処法も解説します。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

>数が膨大なため、マクロで何とかできないかなと考えています。  基本的には、#1 imogasi さんがお書きの「大原則論」に賛同します。  で、例えば、 ・膨大な データ は 1列 にしか入っていない。 ・「複数のメールアドレス」を区切る文字列(この場合「,」)は「複数のメールアドレス」の セル にしか入っていない。 というような場合でしたら、マクロ を使わなくても、 1)「膨大な データ」が入っている列を選択する。 2)[区切り位置指定ウィザード] で [区切り文字] を [カンマ(C)] にして [完了(F)] する。 ということで、列方向への分轄は可能です。  次に、 ・「複数のメールアドレス」を区切る文字列(この場合「,」)が「複数のメールアドレス」の セル 以外にも入っている。 というような場合でしたら、 Sub Macro1()  Dim c As Range  With Cells   Set c = .Find("@*,")   If Not c Is Nothing Then    Do     c.TextToColumns Comma:=True     Set c = .FindNext(c)    Loop While Not c Is Nothing   End If  End With End Sub というようなことで、列方向への分轄は可能です。  但し、コード は荒削りですので、[区切り位置指定ウィザード] の操作を [新しいマクロの記録] で記録して、お望みの コーディング に直してください。  それでも、どうしても、行方向への分轄がお望みということになれば、 Sub Macro2()  Dim c As Range  Dim s As Variant  With Cells   Set c = .Find("@*,")   If Not c Is Nothing Then    Do     s = Split(c.Value, ",")     c.Offset(1).EntireRow(UBound(s)).Insert     c.Resize(UBound(s) + 1) = Application.WorksheetFunction.Transpose(s)     Set c = .FindNext(c)    Loop While Not c Is Nothing   End If  End With End Sub というようなことでできないこともなさそうですが、やはり、#1 imogasi さんがお書きのように >あとの扱いが非常に困る場合が出てきそうで、やらないほうが良い ような感じがします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

 #2 DOUGLAS_ です。 Sub Macro2() の c.Offset(1).EntireRow(UBound(s)).Insert は c.Offset(1).Resize(UBound(s)).EntireRow.Insert の誤りでした。  大変、失礼いたしました。  <(_ _)>

ikety
質問者

お礼

区切り位置指定ウィザードを使ったらセルを分けることができました。 区切り位置指定ウィザードを知らなかったというのもお恥ずかしい話ですが。 解決してよかったです。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

(1)大原則論 エクセルで1人のデータをその列だけ複数化して2行以上に持つことは、あとの扱いが非常に困る場合が出てきそうで、やらないほうが良い。 例えば4つまでと決めて、メールアドレスで4列確保するほうがまだましではないかと思う。 (2)数のメールアドレスが一つのセルに入力されておりました。 標準モジュールに 例データ C列(D列以右は結果) aaa,bnnn,chh aaa bnnn chh shh shh djkl djkl f,ghjko f ghjko ーーーー Sub test01() For i = 1 To 4 s = Cells(i, "C") ss = Split(s, ",") j = 4 MsgBox UBound(ss) For k = 0 To UBound(ss) Cells(i, j) = ss(k) j = j + 1 Next k Next i End Sub こういうSplit関数の使い方は、勉強して慣れないと仕様が無い。 最下行の行番号の捉え方は知っているのかな。 Googleで「エクセル VBA 最下行」で照会。 ーー >Ctrl+Fで「,」を検索したり色々と試しましたが 的外れ。在る文字列のセルが何処にあるかを探すものです。セルの中の文字を探すのはInstr関数。 Instr関数でもやれるが、なれないと、文字列中で、繰り返し探索のロジックが難しいからここでは省略。

ikety
質問者

お礼

ありがとうございます。 メールアドレスについては使用しているソフトからCSV出力をしたら、一つのセルにカンマ区切りで表示されてしまっていました。 「エクセル VBA 最下行」についても調べてみます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • gmailの見方

    Gmailを作ったのですが、 Gmail へようこそ。アカウントには http://mail.google.com/ からログインできます。 作成の時登録したメールアドレスに、上記ののメールが来ました。 ログインすると、Google アカウントに Gmail を追加  という画面になり 名前 姓 名 Gmail アドレスを選択 @gmail.com 携帯電話 (表示されています) 現在のメール XXXX@ac.wakwak.com 名前とGmailアドレスを入力させ、「送信」をクリックする らしいのですが、私のGmail Addressを入力すると既に使われています。 と出て、エラーになります。 どうすれば見たり使ったり出来るのですか?

  • Gmail機能(なりすましメール)

    Gmail機能に「別のアドレスからメールを送信」や「POP3を使用したメールの確認」などがあります。 私は、Gmailをメインのアカウントとして使っていて、昔から使っていた使用頻度の少ないYahooや HotmailをGmailで一括管理・利用しています。 (例)  △△△@Yahoo.co.jpに届いたメールを△△△@Gmail.comに転送(受信)し、  Gmail.comから、送信者△△△@Yahoo.co.jpとして返信している。 このような使い方をしていると、携帯端末アドレスへのメールは"なりすましメール"と判定され スパムメールフィルターに引っ掛っかり相手へ送信されないのでしょうか? 最近、docomoやauアカウントからの迷惑メールが多くなり、なりすましメールフィルターを 設定するべきか悩んでおります。

  • Gmailは○○○@xxx.comで送受信できるのですか?

    私は普段○○○@nifty.comというアドレスでメールを利用しています。 いまGmailについてネットで調べているのですが、メーラーとGmailをIMAPでつなぐと以下のようなことができるという認識であっていますでしょうか? 1.○○○@nifty.comが受信したメールをGmail側で受け取れる→メーラーで見れる 2.メーラーでGmailのアカウントから○○○@nifty.comとして送信できる 3.複数のPCでメーラーのGmail接続設定を同じにすれば、どのメーラーでも一つのメーラーを操作しているように、操作履歴(メールの開封や移動、削除など)が同一に見える 4.自分のPCにメールを溜め込む必要がない ほかにも便利な使い方がありましたら教えてください。使っているメーラーはThunderbirdです。 どうぞよろしくお願いします。

  • niftyアドレスからソフトバンクの携帯アドレスにメール転送ができない

    niftyアドレスからソフトバンクの携帯アドレスにメール転送ができない。 メールチェックを携帯でしたいので、いつも、ニフティのメール転送機能を使って、ニフティ・アドレス(@nifty.com)からgmail.comアドレスとsoftbank.ne.jpアドレスへメールを転送しています。昨日の夜9時頃からソフトバンクのアドレスへ転送がされなくなってしまいました。gmailへは問題なく転送されています。原因が分からず、困っています。メールチェックを頻繁に行う必要があるため、こまっっています。 ニフティの問題なのでしょうか、ソフトバンクの問題なのでしょうか?どなたか、お知恵を貸していただけると助かります。

  • URL転送のドメインで独自アドレスを取得したい

    取得済みのドメイン名で独自メールアドレスを取得したいのですが、 サーバレンタルをしているわけではなく、URL転送サービスを使っています。 この場合、独自アドレスの取得は可能でしょうか? ・@niftyの@homepageでHPを作っています ・@niftyのURL転送サービスを使って「xxxx.com」というドメインを取得し、http://www.xxxx.comからURLを転送しています ・****@xxxx.comというアドレスを取得したい できればGoogle Appsを使いたいのですが、ドメイン所有権の確認作業がうまくいきませんでした。 やはり転送サービスでは、ドメインを取得していることにならないのでしょうか。 良い方法があればぜひアドバイスをお願いします。

  • Gmailへのログインについて

    自宅ではxxx@gmail.comにログインできます(自分のgmailアドレス) 勤務先では下記のメールアドレスとパスワードでgmailにログインしています。 bbb@xxxx.co.jp password 自宅のパソコンから上記、勤務先のメールアドレスとパスワードを入力して gmailにログインするにはどうすればよいのでしょうか? 宜しくお願い致します。

  • niftyアドレスからソフトバンクの携帯アドレスにメール転送ができない

    niftyアドレスからソフトバンクの携帯アドレスにメール転送ができない。 メールチェックを携帯でしたいので、いつも、ニフティのメール転送機能を使って、ニフティ・アドレス(@nifty.com)からgmail.comアドレスとsoftbank.ne.jpアドレスへメールを転送しています。昨日の夜9時頃からソフトバンクのアドレスへ転送がされなくなってしまいました。gmailへは問題なく転送されています。原因が分からず、困っています。メールチェックを頻繁に行う必要があるため、子まっっています。 ニフティの問題なのでしょうか、ソフトバンクの問題なのでしょうか?どなたか、お知恵を貸していただけると助かります。

  • 1アカウントで複数のメールアドレスが持てるメール

    Gmailでは、メールアドレスに「+」をつけるか、または、メールアドレスの文字列に「.」を追加して、一つのアカウントで複数のメールアドレスを持つことができます。 (例 abc**@gmail.com → abc**+vwxyz@gmail.com OR a.b.c.d.e@gmail.com) 同様に1つのアカウントで、複数のメールアドレスを持てるメールはございますでしょうか?

  • 複数のメールチェックのソフトで設定するには?

    こんばんは。 メールチェックをかんたんにしたいと思い、 複数のアドレスのチェックができるソフトを 探していて、いくつか試してみました。 1) LookMail 2) Gmail Checker 3) Yahoo widgetメールチェッカー の3つをDLし、早速試しています。1)に興味が あります。Yahoo.co.jp,hotmail.com,Gmail.comを できれば設定して、使用したのですが、どこかで gmail.comの設定はできない、ような感じのことが 書いてありました。この3つのアドレスを1)でチェック するにあたり、APOP,PORTを教えていただけませんか? どうぞ、宜しくお願いいたします。 1

  • 【Gmail】プライベート用とネットサービス用のアドレスを1つのアカウ

    【Gmail】プライベート用とネットサービス用のアドレスを1つのアカウントで使いたい分けたい Gmailでは1つのアカウントで複数のメールアドレスが使用できますが(例:abcd@gmail.comとabcd+hjkl@gmail.com) 「Mac Mail」や「Thunderbird」などのメールソフトで、2つのアドレスを全く分けて使用することは出来ますか。