10秒目をつむったら…

Sheet1(前月データ)
Sheet2(今月データ)
Sheet3(集計)

Sheet1,2にはA2行目からAA1000までデータが入っています。(列数、行数は毎月変わります)

やりたいことは、VBAで(毎月列数行数は変わってしまう可能性があります)
前月、今月を集計シートに一行毎にコピーし、その下の行に差をもとめたいです。
VBAを書ける同僚が、休暇を取っていて非常に困っています、
どうぞよろしくおねがいします。

【集計シート】
  A B C D E F G
1
2 Sheet1(前月データ)2行目をコピー貼り付け
3 Sheet2(今月データ)2行目をコピー 貼り付け
4 前月-今月で差分を求める数式を入れたい
5 空行
6 Sheet1(前月データ)3行目をコピー貼り付け
7 Sheet2(今月データ)3行目をコピー 貼り付け
8 前月-今月で差分を求める数式を入れたい
9 空行
。。。最終行まで繰り返し

A 回答 (1件)

こんにちは!



Sheet1のデータからSheet2の各列のデータをマイナスしたい!というコトですね。
両Sheetとも同じ行数・同じ列数だという大前提になりますが、一例です。
そして
>前月-今月で差分を求める数式を入れたい
というコトなので、計算結果ではなく、計算式のままにしておきたい!というコトだとしての一例です。

標準モジュールにしてください。

Sub Sample1()
 Dim i As Long, j As Long
 Dim cnt As Long, myRow As Long
 Dim lastCol As Long
 Dim wS1 As Worksheet, wS2 As Worksheet

  Set wS1 = Worksheets("Sheet1")
  Set wS2 = Worksheets("Sheet2")
   Application.ScreenUpdating = False
    With Worksheets("Sheet3")
     .Cells.ClearContents
     wS1.Rows(1).Copy
      .Range("A1").PasteSpecial Paste:=xlPasteValues
     For i = 2 To wS1.Cells(Rows.Count, "A").End(xlUp).Row
      cnt = cnt + 1
      myRow = (cnt - 1) * 4 + 2
      lastCol = wS1.Cells(i, Columns.Count).End(xlToLeft).Column
      For j = 1 To lastCol
       .Cells(myRow, j) = wS1.Cells(i, j)
       .Cells(myRow + 1, j) = wS2.Cells(i, j)
       .Cells(myRow + 2, j).Formula = "=" & .Cells(myRow, j).Address(False, False) & "-" & .Cells(myRow + 1, j).Address(False, False)
      Next j
     Next i
      .Activate
      .Range("A1").Select
    End With
   Application.ScreenUpdating = True
  MsgBox "完了"
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 1
この回答へのお礼

お礼が遅れまして申し訳ありません!
やりたかったことが完璧に作業できました。
感謝がいっぱいです。
ありがとうございました!

お礼日時:2018/07/19 09:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!