| 
    
     |  | γさま 大変お返事遅れてすいません。
 頂いた式やコメントを参考に取り組み中です。
 一度締め切ります。
 ひょっとしたらまたご質問させて頂くかもしれませんが。
 
 改めて、具体的な式まで書いて頂きありがとうございました。
 
 
 ▼γ さん:
 >・各部門のシートはフォーマット(特に数値が入っているセルの位置)が統一されているか。
 > 部門によっては、製品と製品の間に空行が入っているといったことがないか。
 >・製品の数は各部門で違うとき、
 > 単純に、最後の行までを対象に、製品の合計をとればよいのか、不明。
 >などの疑問点があります。
 >
 >しかし、現時点で示されたものを前提にコメントしておきます。
 >
 >> Dim 変数 As Range
 >> SET 変数 = RANGE を使うのかなと思いましたが、
 >> 別ファイルからの取得なので、
 >> SET 変数 = RANGE('[作業内容.XLS]部門A!B2)
 >というところですが、
 >Workbooks("aaa").Worksheets("BBB").Range("...") という形式のほうが
 >よいでしょう。
 >
 >たとえば、こんな書き方ができるかもしれません。参考例です。
 >Sub test()
 >  Dim wbS As Workbook
 >  Dim wbD As Workbook
 >  Dim wsS As Worksheet
 >  Dim wsD As Worksheet
 >  Dim sh As Variant
 >  Dim k As Long
 >
 >  Set wbD = Workbooks("単月業績.xls")   'D: Destination(転記先)
 >  Set wsD = wbD.Worksheets("6月")
 >
 >  Set wbS = Workbooks("作業内容.xls")   'S: Source(転記元)
 >  For Each sh In Array("部門A", "部門B")
 >    Set wsS = wbS.Worksheets(sh)
 >    wsD.Cells(2 + k, "D").Value = getSum(wsS.Cells(2, 4))
 >    wsD.Cells(2 + k, "E").Value = getSum(wsS.Cells(3, 4))
 >    wsD.Cells(3 + k, "D").Value = getSum(wsS.Cells(4, 4))
 >    wsD.Cells(3 + k, "E").Value = getSum(wsS.Cells(5, 4))
 >    wsD.Cells(4 + k, "D").Value = getSum(wsS.Cells(6, 4))
 >    wsD.Cells(4 + k, "E").Value = getSum(wsS.Cells(7, 4))
 >    k = k + 4
 >  Next
 >Ens Sub
 >
 >合計する部分は、例えば関数にしておいて
 >Function getSum(r As Range) As Long
 >  getSum = r.Value + r.Offset(6).Value + r.Offset(12).Value
 >End Function
 >などとします。最大3つの製品に関する数値があるという前提です。
 >
 >上記コードはとっかかりに過ぎません。
 >月に応じて、書込先の列を変えるとか、いろいろ改善点がありえます。
 >
 >なお、今後、実はこういう前提になっていました、
 >という変更事項がありましてもコードを修正する積もりはありません。
 >予め、お断りしておきます。
 >
 >上記は単なるヒントですから、
 >それを参考にしてあなたがトライしていただきたいと思います。
 >
 >なお、今後、予算と実績の比較とか色々な分析をされると思うので、
 >現在のフォーマットが適当なものかも不明です。
 >ピボットテーブルなどの利用できる形式の書式のほうがよいかもしれませんね。
 >
 >それでは頑張ってください。
 
 |  |