回答編集履歴
2
追記
answer
CHANGED
@@ -19,4 +19,55 @@
|
|
19
19
|
「不要な行を削除したい。」ということを見落としていました。
|
20
20
|
最終的にマクロで形を整えるのですから、
|
21
21
|
最後の結果が間違いでなければ、どういう手順処理してもよいですよね?
|
22
|
-
なので、一旦シート上のすべてのセルの結合を解除した方が考え方が簡単ですかね?
|
22
|
+
なので、一旦シート上のすべてのセルの結合を解除した方が考え方が簡単ですかね?
|
23
|
+
|
24
|
+
```ExcelVBA
|
25
|
+
'表の成型(不要な行の削除)
|
26
|
+
Sub test()
|
27
|
+
Dim rngTable As Range
|
28
|
+
Dim c As Range
|
29
|
+
Dim a As Range
|
30
|
+
Dim b As Range
|
31
|
+
|
32
|
+
'処理する表のタイトル行を除いたセル範囲の取得
|
33
|
+
With ActiveSheet.Range("A1").CurrentRegion
|
34
|
+
Set rngTable = Intersect(.Cells, .Offset(1))
|
35
|
+
End With
|
36
|
+
|
37
|
+
'1列目と2列目の前処理
|
38
|
+
For Each c In rngTable.Resize(, 2).Columns
|
39
|
+
c.UnMerge 'セルの結合を解除
|
40
|
+
Set a = Nothing '変数の初期化
|
41
|
+
On Error Resume Next
|
42
|
+
Set a = c.SpecialCells(xlCellTypeBlanks) 'ジャンプ機能で空白セル検索
|
43
|
+
On Error GoTo 0
|
44
|
+
|
45
|
+
'もし、空白セルがあったら
|
46
|
+
If Not a Is Nothing Then
|
47
|
+
'空白範囲毎に繰り返し
|
48
|
+
For Each b In a.Areas
|
49
|
+
'セル範囲の1行上の値を転記
|
50
|
+
b.Value = b.Cells(0, 1).Value
|
51
|
+
Next
|
52
|
+
End If
|
53
|
+
Next
|
54
|
+
|
55
|
+
'3列目が空白の行を削除
|
56
|
+
On Error Resume Next
|
57
|
+
rngTable.Columns(3).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'ジャンプ機能で空白セル検索
|
58
|
+
On Error GoTo 0
|
59
|
+
End Sub
|
60
|
+
```
|
61
|
+
|
62
|
+
まずは、こんな感じで成形して、小計機能やピボットテーブルなどの機能で、
|
63
|
+
小計や総計を計算できるようにしてやります。
|
64
|
+
元のデータが変わるので、別のシートにでもコピペして作業するとよいかと思います。
|
65
|
+
さらに別のシートにピボットテーブルで集計し、
|
66
|
+
期待した見た目にならなければ、それの結果をまた加工したらよいかと思います。
|
67
|
+
中間の作業に使ったシートは、削除してしまえば、
|
68
|
+
マクロを使う人には途中にどんなことをしたかはわからないようになります。
|
69
|
+
もちろん自作することも可能ですが、
|
70
|
+
せっかくエクセルを使っているのですから、
|
71
|
+
エクセルの機能を使うと、自作する労力が減らせ、コードを書く量も減らせます。
|
72
|
+
(エクセルの機能を調べる方に労力がかかるかもしれませんが。)
|
73
|
+
今回の場合、小計機能を使ってもいいかもしれませんね。
|
1
追記
answer
CHANGED
@@ -11,4 +11,12 @@
|
|
11
11
|
ステップ実行をしながら、
|
12
12
|
ローカルウィンドウで変数の中身の変化を確認し、
|
13
13
|
意図通りに変化しているか確認してください。
|
14
|
-
そうすることで問題点が見えてくると思います。
|
14
|
+
そうすることで問題点が見えてくると思います。
|
15
|
+
|
16
|
+
-----
|
17
|
+
追記
|
18
|
+
|
19
|
+
「不要な行を削除したい。」ということを見落としていました。
|
20
|
+
最終的にマクロで形を整えるのですから、
|
21
|
+
最後の結果が間違いでなければ、どういう手順処理してもよいですよね?
|
22
|
+
なので、一旦シート上のすべてのセルの結合を解除した方が考え方が簡単ですかね?
|