- ベストアンサー
エクセルVBAでブックBの指定行の列をコピーしてブックAの指定セルに貼り付ける方法
- エクセルVBAを使用して、ブックBの指定行の列をコピーしてブックAの指定セルに貼り付ける方法を教えてください。
- 具体的には、ブックAのシートAのセルD3に号機No.を入力し、ブックBのシートBのD列から同じ号機No.を探し、当てはまる行のI列、J列、K列、L列、M列をコピーして、ブックAのシートAのF13、F14、F15、F16、F17に貼り付けたいです。
- また、ブックBのシートBのD列に同じ号機No.が複数存在する場合は、最新の号機No.の行を読み取るようにしたいです。現在は、行番号を入力する方法で処理しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
もっといろいろシンプルに private sub Worksheet_Change(byval Target as excel.range) dim w as workbook dim c as range if application.intersect(target, range("D3")) is nothing then exit sub if range("D3") = "" then exit sub application.calclation = xlcalculationmanual application.screenupdating = false ’転記元のブックを開いて逆順で検索する set w = workbooks.open("c:test\book1.xls") set c = w.worksheets("シートB").range("D:D").find(what:=range("D3").value, lookin:=xlvalues, lookat:=xlwhole, searchdirection:=xlprevious) ’見つけた(一番下の)セルを基準に転記する if not c is nothing then range("F13").value = c.offset(0, 7).value range("F14").value = c.offset(0, 8).value range("F15").value = c.offset(0, 9).value range("F16").value = c.offset(0, 5).value range("F17").value = c.offset(0, 6).value end if w.close false application.screenupdating = true application.calclation = xlcalculationautomatic end sub みたいな。
お礼
まさに完璧なマクロでした。 非常に助かりました。 ありがとうございました。 ベストアンサーとさせて頂きます。