[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別ファイルから入力内容と一致する部分を抽出』(助けてください)
ファイル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.