- ベストアンサー
リストからデータを紐付ける方法
- エクセルで別シートのリストからデータを紐付けする方法について教えてください。
- Sheet1のB列に入力された文字列を検索値とし、リストのA列の文字列と部分一致するものの横の列(B列)の値をSheet1のC列に紐付けたく思います。
- 具体的な紐付けの方法を教えてください。
- みんなの回答 (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
その他の回答 (1)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
末尾に付加する文字列に関する情報がもう少しあれば、何もできないということはありません。 しかしあまりスマートな方法になるとも思えないので、素直に、末尾に付加する文字列の部分を別の列に分けることをお勧めします。そうすれば、付加される前の文字列を VLOOKUP などで検索することにより、リストの 2 列目(リストの B 列)を持ってくることができますね? 文字列どうしをつなげるのは簡単です。「=b3&c3」といった数式でできます。 なおそういう処理をなさろうとする理由(データの種類、作業の目的など)が分かれば、もっと良い方法を提示できることもあるかもしれません。
お礼
回答ありがとうございました。 コード毎、説明も記入していただき大変勉強になりました。