質問編集履歴

2

2018/06/10 11:05

投稿

baker
baker

スコア7

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  - B列:「0」を表記
14
14
 
15
- - C列/F列:任意の文字列(例:Z)を表記
15
+ - C列/F列:任意の文字列(例:ZZ、XX)を表記
16
16
 
17
17
  - D列/E列/G列:処理なし(空白のまま)
18
18
 

1

質問内容や表記が判りづらくすみません;手直しと追記をしてみました。

2018/06/10 11:05

投稿

baker
baker

スコア7

test CHANGED
@@ -1 +1 @@
1
- 指定の列から空白を探して任意のデータを挿入するマクロが知りたいです
1
+ 【修正】挿入した空白行の各セルに任意のデータを挿入するマクロが知りたいです
test CHANGED
@@ -1,8 +1,8 @@
1
- ### 指定の列から空白を探して任意のデータを挿入するマクロ
1
+ ## 行いたい処理内容
2
2
 
3
3
 
4
4
 
5
- ExcelのB列~I列までが処理対象の列
5
+ ExcelのB列~I列までが処理対象の列
6
6
 
7
7
  ・B列で「1」が検出された場合、「1」が検出された行の上に空白行を挿入したい
8
8
 
@@ -10,13 +10,13 @@
10
10
 
11
11
  ・挿入された空白行には各列で行いたい処理がある
12
12
 
13
- B列:「0」を表記
13
+ - B列:「0」を表記
14
14
 
15
- C列/F列:任意の文字列(例:Z)を表記
15
+ - C列/F列:任意の文字列(例:Z)を表記
16
16
 
17
- D列/E列/G列:処理なし(空白のまま)
17
+ - D列/E列/G列:処理なし(空白のまま)
18
18
 
19
- H列/I列:空白であれば次行の値をコピー
19
+ - H列/I列:空白であれば次行の値をコピー
20
20
 
21
21
 
22
22
 
@@ -24,53 +24,51 @@
24
24
 
25
25
 
26
26
 
27
- ### 処理前のデータ例(*=Null)
27
+ ##### 処理前のデータ例
28
+
29
+ |A|B|C|D|E|F|G|H|I|
30
+
31
+ |:--|:--:|--:|
32
+
33
+ ||1|A1|a|a|1A|a|01|11
34
+
35
+ ||2|A2|b|b|2A|b|02|22
36
+
37
+ ||3|A3|c|c|3A|c|03|33
38
+
39
+ ||1|B1|d|d|1B|d|04|44
40
+
41
+ ||1|C1|e|e|1C|e|05|55
28
42
 
29
43
 
30
44
 
31
- □|A|B|C|D|E|F|G|H|I
32
-
33
- 1|*|1 |○|▲|▲|◎|▲|01|01
45
+ ##### 処理後のデータ例 ※希望形です
34
-
35
- 2|*|2 |○|▲|▲|◎|▲|02|02
36
-
37
- 3|*|3 |○|▲|▲|◎|▲|03|03
38
-
39
- 4|*|1 |○|▲|▲|◎|▲|66|77
40
-
41
- 5|*|1 |○|▲|▲|◎|▲|88|99
42
46
 
43
47
 
44
48
 
49
+ |A|B|C|D|E|F|G|H|I|
50
+
51
+ |:--|:--:|--:|
52
+
53
+ ||0|ZZ|||XX||01|11
54
+
45
- ### 処理後のデータ例(*=Null) ※希望形です
55
+ ||1|A1|a|a|1A|a|01|11
56
+
57
+ ||2|A2|b|b|2A|b|02|22
58
+
59
+ ||3|A3|c|c|3A|c|03|33
60
+
61
+ ||0|ZZ|||XX||04|44
62
+
63
+ ||1|B1|d|d|1B|d|04|44
64
+
65
+ ||0|ZZ|||XX||05|55
66
+
67
+ ||1|C1|e|e|1C|e|05|55
46
68
 
47
69
 
48
70
 
49
- □|A|B|C|D|E|F|G|H|I
71
+ ## 現状のマクロ(テストデータ)
50
-
51
- 1|*|0 |Z|*|*|Z|*|01|01
52
-
53
- 2|*|1 |○|▲|▲|◎|▲|01|01
54
-
55
- 3|*|2 |○|▲|▲|◎|▲|02|02
56
-
57
- 4|*|3 |○|▲|▲|◎|▲|03|03
58
-
59
- 5|*|0 |Z|*|*|Z|*|66|77
60
-
61
- 6|*|1 |○|▲|▲|◎|▲|66|77
62
-
63
- 7|*|0 |Z|*|*|Z|*|88|99
64
-
65
- 8|*|1 |○|▲|▲|◎|▲|88|99
66
-
67
-
68
-
69
-
70
-
71
- ### 試したこと
72
-
73
-
74
72
 
75
73
  データを処理して空白行の挿入まではネットで調べながらマクロを組めたのですが、
76
74
 
@@ -80,6 +78,84 @@
80
78
 
81
79
 
82
80
 
81
+ >sazi様
82
+
83
+ 以下はテスト用として作成途中のマクロです。
84
+
85
+ 質問では"B列の「1」をキー"としていますが、
86
+
87
+ テスト段階では以下の処理を行っています。
88
+
89
+ ("マークダウンで括る"の認識が間違っていたら申し訳ございません)
90
+
91
+
92
+
93
+ ・A列(データ毎にナンバリング)を最終行から読んでいき、値が変化したら空白行を挿入
94
+
95
+ ・挿入した空白行のB列に文字列"AA"を挿入
96
+
97
+ ・(1行目はヘッダーが設定されているので)2行目の空白行は書式設定クリア
98
+
99
+
100
+
101
+ ▼テストデータ
102
+
103
+ |A|B|C|D|E|
104
+
105
+ |:--|:--:|--:|
106
+
107
+ |1|赤|a|a|A1|
108
+
109
+ |2|青|d|d|B1|
110
+
111
+ |2|青|d|d|B2|
112
+
113
+ |3|黄|e|e|C1|
114
+
115
+ |3|黄|e|e|C2|
116
+
117
+ |3|黄|e|e|C3|
118
+
119
+
120
+
121
+ ```ここに言語を入力
122
+
123
+ Sub Macro1()
124
+
125
+ Dim i As Long
126
+
127
+ Dim S As String
128
+
129
+
130
+
131
+ For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
132
+
133
+ If Range("A" & i).Value <> Range("A" & i - 1).Value Then
134
+
135
+ Rows(i).Insert
136
+
137
+ Cells(i, 2).Value = "AA"
138
+
139
+ Cells(i, 3).Value = Cells(i, 1).Value
140
+
141
+ End If
142
+
143
+ Next i
144
+
145
+ Rows(2).ClearFormats
146
+
147
+ End Sub
148
+
149
+ ```
150
+
151
+ 本番データにもあるナンバリングが信頼できるデータではないため、
152
+
153
+ できれば質問にある値をキーにしたいです。
154
+
155
+
156
+
157
+
158
+
83
159
  ### 補足情報(FW/ツールのバージョンなど)
84
160
 
85
161