質問です。


A列
aaa111
222bbb

の文字列を

B列   C列
1   docomo.ne.jp
2   ezweb.ne.jp 

を参照キーとして

D列にある数字
1
2

の答えを
E列にメールアドレスとして
aaa111@docomo.ne.jp
222bbb@ezweb.ne.jp  

A列の文字列を
つなげて上記のように表示できる
エクセルのマクロまたは関数を教えてください。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/04/26 23:08:46
  • 終了:2011/04/28 10:32:10

ベストアンサー

id:taknt No.2

きゃづみぃ回答回数13537ベストアンサー獲得回数11982011/04/27 00:11:58

ポイント40pt

vlookupでも できますが マクロで作りました。

Sub main()
Dim b As Long
Dim e As Long

For b = 1 To Range("D1").End(xlDown).Row
    c = Cells(b, "D")
    For e = 1 To Range("B1").End(xlDown).Row
        If Cells(e, "B") = c Then
            Cells(b, "E") = Cells(b, "A") & "@" & Cells(e, "C")
            Exit For
        End If
    Next e
Next b

End Sub

id:inosisi4141

ありがとうございます。

B列C列の参照キーが1だけしか持ってこないのですが

ちなみにB列C列の参照キーは全部で13行あります。

よろしくお願いします。

2011/04/27 18:17:38

その他の回答(3件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692011/04/26 23:34:32

ポイント30pt

E1の数式を次のようにして下にコピー。

=A1 & VLOOKUP(D1,B:C,2,FALSE)

id:inosisi4141

@マークは自動的にドメインの前に付けるのは無理ですか

無理であればE列に@マークを置いても良いですが。

よろしくお願いします。

だだダブルクリックしてコピーしたいのでその辺も考慮して位置をお願いします。

ほかの方法でデータの最後までコピーできる方法があれば教えてください。

データは5000行以上はあります。

2011/04/27 18:10:18
id:taknt No.2

きゃづみぃ回答回数13537ベストアンサー獲得回数11982011/04/27 00:11:58ここでベストアンサー

ポイント40pt

vlookupでも できますが マクロで作りました。

Sub main()
Dim b As Long
Dim e As Long

For b = 1 To Range("D1").End(xlDown).Row
    c = Cells(b, "D")
    For e = 1 To Range("B1").End(xlDown).Row
        If Cells(e, "B") = c Then
            Cells(b, "E") = Cells(b, "A") & "@" & Cells(e, "C")
            Exit For
        End If
    Next e
Next b

End Sub

id:inosisi4141

ありがとうございます。

B列C列の参照キーが1だけしか持ってこないのですが

ちなみにB列C列の参照キーは全部で13行あります。

よろしくお願いします。

2011/04/27 18:17:38
id:readmaster No.3

readmaster回答回数74ベストアンサー獲得回数52011/04/27 08:33:35

ポイント10pt

要するに、

1,2などの数字キーで検索した結果を返したいということだと

思いますので、VLOOKUP関数が適切かと思います。

例えば、

=A1&"@" & VLOOKUP(D1,$B$1:$C$3,2,FALSE)

などです。


VLOOKUP(検索したいデータ,検索範囲,左から何列目の値を返すか,完全一致ならFALSE)

という具合です。


ここでは、

検索したいデータ D列の数字、

検索範囲 B列とC列の 数字とドメイン名、

左から何列目の値を返すか C列のドメイン名なので2

完全一致なのでFALSEを指定。

あとは、メールアドレスのために、A列と@を文字列として付加しています

id:inosisi4141

ありがとうございます。

問題の出し方が説明不足で申し訳ありません。

B列C列の参照キーは全部で13行あります。

B列は1から13までの数字になっています。

よろしくお願いします。

2011/04/27 18:26:57
id:volvicn No.4

volvicn回答回数2ベストアンサー獲得回数02011/04/26 23:17:43

ポイント10pt

こんな感じでいががでしょうか?

E1に以下の値を入れて、2行目以降にコピーする。

=A1&"@"&VLOOKUP(D1,$B$1:$C$2,2,TRUE)

id:inosisi4141

ありがとうございます。

1だけはうまく行きました。

問題の出し方が説明不足で申し訳ありません。

B列C列の参照キーは全部で13行あります。

B列は1から13までの数字になっています。

よろしくお願いします。

2011/04/27 18:30:42
  • id:SALINGER
    @が抜けてましたか。
    E1の数式は
    =A1 & "@" & VLOOKUP(D1,B:C,2,FALSE)
    D列は数字が必ず入るはずですから、ダブルクリックでコピーできます。
  • id:inosisi4141
    早速ありがとうございます。
    上手くゆきました。
    D列にデータがありますのでうまくコピーできました。
  • id:taknt
    >B列C列の参照キーが1だけしか持ってこないのですが
    >ちなみにB列C列の参照キーは全部で13行あります。

    B1から 空白までの行を チェックしています。
    途中に 空白があるなら ちょっと変えないとダメですね。
  • id:inosisi4141
    すみませんでした。

    テストではB1が空白だったかもしれません。
    B1からデータおよび参照を埋めたらうまく行きました。

    データおよび参照のデータはB2からでお願いします。
    B1は項目です。

    よろしくお願いします。
  • id:taknt
    For b = 1 To Range("D1").End(xlDown).Row

    For b = 2 To Range("D2").End(xlDown).Row



    For e = 1 To Range("B1").End(xlDown).Row

    For e = 2 To Range("B2").End(xlDown).Row

    にしてもらえればいいでしょう。


    他の人の回答も B1とかになってるのを B2というふうに 2行目からにしたほうがいいです。

    ちなみに
  • id:inosisi4141
    ありがとうございました。
    変更しましたら上手くゆきました。
    完璧です。
    他の人の関数も修正してみます。
    ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません