• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのVBAで教えて下さい。)

エクセルVBAでブックBの指定行の列をコピーしてブックAの指定セルに貼り付ける方法

このQ&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.の行を読み取るようにしたいです。現在は、行番号を入力する方法で処理しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答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 みたいな。

yyrd0421
質問者

お礼

まさに完璧なマクロでした。 非常に助かりました。 ありがとうございました。 ベストアンサーとさせて頂きます。