[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別ファイルから入力内容と一致する部分を抽出』(助けてください)
ファイルAにのセルB2に「2012サンプル」と入力すると、
別のファイルBから同じ文字が書かれた部分を探し、
その右のセルに入力されている3つの情報を抜き出し、
ファイルBのセルC2、D2、E2に書き出したいです。
※ファイルBの仕様↓
サンプル名 品名 種類 区分
2012サンプル サンプル12 G 開発
このように入力してあります。
この品名、種類、区分の部分をコピーして、
書き出してくれるマクロを作りたいです。
たくさん調べているのですが、全くマクロが理解できず詰んでいます。
文字列を作っていただける方はいらっしゃいますか?
お手数ですがよろしくお願いいたします…
< 使用 Excel:Excel2013、使用 OS:unknown >
処理順としては
(1)ファイルAの××シート(シートの提示がないのでご自分で埋めてください)のセルB2に入っている値を取得する (2)ファイルBを開く (3)(2)のブックの××シート(シートの提示がないのでご自分で埋めてください)のB列を対象に、 (1)の値がどの【行】にあるかMatch関数などで調べる (4)調べた行の該当列をコピーして(1)のシートのC2に貼り付ける
という流れになりますよね。
(もこな2) 2021/01/22(金) 15:43
Sub Sample() Application.ScreenUpdating = False Dim I As Long Dim xlBook Set xlBook = Workbooks.Open("ファイルB.xls") ' I = 2 Do While Range("A" & I).Value <> "" ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0) I = I + 1 Loop xlBook.Close Application.ScreenUpdating = True MsgBox ("完了") End Sub (助けてください) 2021/01/22(金) 16:00
【ファイルB.xlx の 1番目のシート】 _________A____________B__________C_______D________ 1 サンプル名 品名 種類 区分 1 2012サンプル サンプル12 G 開発 2 2013サンプル サンプル13 G 開発 3 2014サンプル サンプル14 G 開発 4 2015サンプル サンプル15 G 開発 5 2016サンプル サンプル16 G 開発 6 2017サンプル サンプル17 G 開発 7 2018サンプル サンプル18 G 開発 8 2019サンプル サンプル19 G 開発 9 2020サンプル サンプル20 G 開発
【ファイルA.xlx の 1番目のシート】 ________A__________B______________C__________D_______E___ 1 2 2012サンプル 3 2013サンプル 4 2000サンプル 5 2011サンプル 6 2022サンプル 7 2033サンプル 8 1000サンプル 9 2012サンプル 10 2012サンプル
【 ↓ マクロ実行後 ↓ 】
________A__________B______________C__________D_______E___ 1 2 2012サンプル サンプル12 G 開発 3 2013サンプル サンプル13 G 開発 4 2000サンプル 5 2011サンプル 6 2022サンプル 7 2033サンプル 8 1000サンプル 9 2012サンプル サンプル12 G 開発 10 2012サンプル サンプル12 G 開発
いろんなアプローチがあるとおもいますが、↓をステップ実行して動きを確認してみてください。
(分からない命令があったら、まずはネット検索してそれでもわからない場合は聞いてください)
Sub 研究用() Dim 発見行 As Variant, 行 As Long Dim srcSH As Worksheet, dstSH As Worksheet
Stop 'ブレークポイントの代わり
Set dstSH = ThisWorkbook.Worksheets(1) 'ファイルA Set srcSH = Workbooks.Open("ファイルB.xls").Worksheets(1) 'ファイルBを開きつつ、1番目のシートをセットする
For 行 = 2 To dstSH.Cells(dstSH.Rows.Count, "B").End(xlUp).Row 発見行 = Application.Match(dstSH.Cells(行, "B").Value, srcSH.Range("B:B"), 0)
If Not IsError(発見行) Then dstSH.Cells(行, "C").Value = srcSH.Cells(発見行, "B").Value dstSH.Cells(行, "D").Value = srcSH.Cells(発見行, "C").Value dstSH.Cells(行, "E").Value = srcSH.Cells(発見行, "D").Value End If Next 行
srcSH.Parent.Close ' srcSHの親、つまりファイルBを閉じる MsgBox "終わり" End Sub
(もこな2) 2021/01/22(金) 19:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.