|
▼超超初心者 さん:
何に問題があるのでしょう?
手作業で埋めて作成したデータとマクロで作成したデータと変わりなく、そのままピボットに使えるはずですが?
>、
>ピボットテーブルのデータをコピペしたものではやはりきちんと動かないのです。データを自分で手入力してみたらきちんと動きました。
・・・ここの意味がいまひっつ分かりづらいですが?
もう一度質問を整理しましょう
貴方のしたいことは、最終的には
ピボットで集計なりグラフを作成することでしたね。
↓↓
「累計からグラフを作るときに月が飛んでいると
求めているようなグラフが作れません。
データがない月探し出して
1行挿入し、前月のデータをコピペするというのを
VBAで自動化したいと思っています。」(これが貴方の依頼文です)
ピボットはデータが揃ってからの作業です。
その前にピボットができるデータの作成です。
そこで元データ(貴方の書かれたデータ)の月単位のデータが
抜けている場合、抜けている月を挿入して、前月のデータを
抜けているデータとして代用する事ですね。
今回のテーマはこれですね。
(抜けたデータ)
HDD メモリ 基板 総計
2003/02 1 0 0 1
2003/04 2 0 0 2
2003/05 3 0 0 3
2003/06 4 0 0 4
2003/07 5 0 0 5
(穴埋めしたデータ)
HDD メモリ 基板 総計
2003/02 1 0 0 1
2003/03 1 0 0 1
2003/04 2 0 0 2
2003/05 3 0 0 3
2003/06 4 0 0 4
2003/07 5 0 0 5
具体的には「抜けたデータ」を
「穴埋めしたデータ」を得たいという事ですね。
問題ないでしょうか。このコードでできる筈ですが・・・
もう一度試してみてください。問題なくマクロが動きます。
Sub 抜け月を加え上の行と同じ数値()
Dim r As Range
For Each r In Range("A2", Range("A65535").End(xlUp))
r.Select
If r.Offset(1).Value <> DateSerial(Year(r.Value), Month(r.Value) + 1, Day(r.Value)) Then
r.Offset(1).EntireRow.Insert
r.Offset(1).Value = DateSerial(Year(r.Value), Month(r.Value) + 1, Day(r.Value))
r.Offset(1, 1).Value = r.Offset(, 1).Value
r.Offset(1, 2).Value = r.Offset(, 2).Value
r.Offset(1, 3).Value = r.Offset(, 3).Value
r.Offset(1, 4).Value = r.Offset(, 4).Value
End If
If r.Row = Range("A65536").End(xlUp).Row - 1 Then
Exit Sub
End If
Next
End Sub
|
|