- ベストアンサー
EXCEL:形式が違う別bookへの転記
- マクロほぼ初心者のため、形式が違う別Bookへの転記について悩んでいます。
- 売上実績表.xlsの比較シートと売上計画表.xlsの2011シートのデータを転記したいが、形式が違うためできません。
- 転記するためのマクロコードが必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
なかなか一発では行かないモノですね。。。 >実際は「4月」「5月」は必ず2011の上のセルにあります 「4月」はC1:E1を結合セルにして記入してあると想定していました。 必ず2011の上にあるなら,それなりにマクロを直す必要がありますがそこまで辿り着きませんでしたね。 スミマセン,回答したマクロをご覧になってすぐに判ったと思いますが,ブックが分かれているのを忘れてました。 改訂マクロ: Sub macro1() Dim m As String Dim c As Long Dim r As Long m = InputBox("何月?") If m = "" Then Exit Sub c = Workbooks("売上計画表.xls").Worksheets("2011").Range("IV1").End(xlToLeft).Column + 1 r = Workbooks("売上計画表.xls").Worksheets("2011").Range("A65536").End(xlUp).Row Workbooks("売上計画表.xls").Worksheets("2011").Cells(1, c) = m With Workbooks("売上計画表.xls").Worksheets("2011").Cells(2, c).Resize(r - 1, 1) .FormulaR1C1 = "=VLOOKUP(RC1,[売上実績表.xls]比較!C1:C37,MATCH(R1C,[売上実績表.xls]比較!R1:R1,0),FALSE)" .Value = .Value End With End Sub 言わずもがなですが念のため,このマクロを動かすときには,計画と実績の両方のエクセルブックが同時に開いていることが前提です。 計画を閉じたまま実行したいときは,マクロの中で計画を開かせ,必要に応じてその後保存して閉じる機能を追加してください。 恐らくしばしば間違いやすいのは,インプットボックスには「4月」と入力し,でも実際に実績に記入されているのが「4月」だったりして,誤入力になるケースが発生すると思いますので注意してください。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
比較シートの「4月」や「5月」が3年分の列に渡っていて,具体的にどこのセル番地に書いてあるのかはっきりしないので,マクロを書いてもらっても間違える可能性があります。 実際に合わせて適切に修正してください。 作成例: sub macro1() dim m as string dim c as long dim r as long m = inputbox("何月?") if m = "" then exit sub c = worksheets("2011").range("IV1").end(xltoleft).column + 1 r = worksheets("2011").range("A65536").end(xlup).row worksheets("2011").cells(1, c)=m with worksheets("2011").cells(2, c).resize(r - 1, 1) .formular1c1 = "=VLOOKUP(RC1,比較!C1:C37,MATCH(R1C,比較!R1:R1,0)+2,FALSE)" .value = .value end with end sub #言い換えるとわざわざマクロを使わなくても,2011シートに適切な(上述のマクロで書かせたような)数式を記入しておけば,それで終わりのお仕事のように見えます。
お礼
keithinさん、丁寧なご説明ありがとうございます! 確かに(1)のシートの図がずれていて 「4月」や「5月」がどこのセルにあるか 分からなかったですね。すみません。 (実際は「4月」「5月」は必ず2011の上のセルにあります。) ところで教えていただいたマクロだと With Worksheets("2011").Cells(2, c).Resize(r - 1, 1) のところで 「アプリケーション定義またはオブジェクト定義のエラーです」といわれます。 これはどこがいけないんでしょうか・・・
お礼
お返事が遅くなってすみません。おかげでなんとかできました。 誤入力を防ぐためにドロップダウンのリストで選択させるようにしてみますね。 本当にありがとうございました!