ホテルを選ぶとき、これだけは譲れない条件TOP3は?

エクセルで別シートのリストからデータを紐付けするには、
どのようにすればよろしいでしょうか?
関数でもVBAでも良いので教えてください。

リストのA列、B列に文字列が記入してあります。
Sheet1のB列の文字列を検索値として、
リストのA列の文字列と部分一致するものの横の列(B列)の値を
Sheet1のC列に紐付けしたいのですが、どのようにすればよろしいでしょうか?

※リストの「1AA111」という文字列とSheet1の「1AA111-G」という文字列の場合
   「1AA111」の箇所で紐付けしたい(図を参照下さい)

エクセルは2007,2010を使用しております。
よろしくお願い致します。

「リストからデータを紐付けしたい」の質問画像

A 回答 (2件)

こんばんは!


VBAでの一例です。

↓の画像のように左側Sheetが「Sheet1」というSheet名で元データがあるとします。
右側Sheet名は 「リスト」としています。

Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub test() 'この行から
Dim i As Long, k As Long
Dim wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("リスト")

Application.ScreenUpdating = False
wS1.Columns(3).ClearContents
For i = 3 To wS1.Cells(Rows.Count, 1).End(xlUp).Row '←Sheet1の3行目~A列最終行まで
For k = 1 To wS2.Cells(Rows.Count, 1).End(xlUp).Row '←「リスト」Sheetの1行目~A列最終行まで
If InStr(wS1.Cells(i, 2), wS2.Cells(k, 1)) > 0 Then
wS1.Cells(i, 3) = wS2.Cells(k, 2)
End If
Next k
Next i
Application.ScreenUpdating = True
End Sub 'この行まで

※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。m(_ _)m
「リストからデータを紐付けしたい」の回答画像2
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
コード毎、説明も記入していただき大変勉強になりました。

お礼日時:2012/12/12 22:38

末尾に付加する文字列に関する情報がもう少しあれば、何もできないということはありません。



しかしあまりスマートな方法になるとも思えないので、素直に、末尾に付加する文字列の部分を別の列に分けることをお勧めします。そうすれば、付加される前の文字列を VLOOKUP などで検索することにより、リストの 2 列目(リストの B 列)を持ってくることができますね?

文字列どうしをつなげるのは簡単です。「=b3&c3」といった数式でできます。

なおそういう処理をなさろうとする理由(データの種類、作業の目的など)が分かれば、もっと良い方法を提示できることもあるかもしれません。
    • good
    • 0

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

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


おすすめ情報