質問するログイン新規登録

質問編集履歴

2

2018/06/10 11:05

投稿

baker
baker

スコア7

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,7 @@
5
5
  ※「1」の値をキーにして空白行を挿入
6
6
  ・挿入された空白行には各列で行いたい処理がある
7
7
  - B列:「0」を表記
8
- - C列/F列:任意の文字列(例:Z)を表記
8
+ - C列/F列:任意の文字列(例:ZZ、XX)を表記
9
9
  - D列/E列/G列:処理なし(空白のまま)
10
10
  - H列/I列:空白であれば次行の値をコピー
11
11
 

1

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

2018/06/10 11:05

投稿

baker
baker

スコア7

title CHANGED
@@ -1,1 +1,1 @@
1
- 指定の列から空白を探して任意のデータを挿入するマクロが知りたいです
1
+ 【修正】挿入した空白行の各セルに任意のデータを挿入するマクロが知りたいです
body CHANGED
@@ -1,44 +1,82 @@
1
- ### 指定の列から空白を探して任意のデータを挿入するマクロ
1
+ ## 行いたい処理内容
2
2
 
3
- ExcelのB列~I列までが処理対象の列
3
+ ExcelのB列~I列までが処理対象の列
4
4
  ・B列で「1」が検出された場合、「1」が検出された行の上に空白行を挿入したい
5
5
  ※「1」の値をキーにして空白行を挿入
6
6
  ・挿入された空白行には各列で行いたい処理がある
7
- B列:「0」を表記
7
+ - B列:「0」を表記
8
- C列/F列:任意の文字列(例:Z)を表記
8
+ - C列/F列:任意の文字列(例:Z)を表記
9
- D列/E列/G列:処理なし(空白のまま)
9
+ - D列/E列/G列:処理なし(空白のまま)
10
- H列/I列:空白であれば次行の値をコピー
10
+ - H列/I列:空白であれば次行の値をコピー
11
11
 
12
12
  ※データの行数は毎回変動するため、最終行を取得しながら処理できたら有難いです。
13
13
 
14
- ### 処理前のデータ例(*=Null)
14
+ ##### 処理前のデータ例
15
+ |A|B|C|D|E|F|G|H|I|
16
+ |:--|:--:|--:|
17
+ ||1|A1|a|a|1A|a|01|11
18
+ ||2|A2|b|b|2A|b|02|22
19
+ ||3|A3|c|c|3A|c|03|33
20
+ ||1|B1|d|d|1B|d|04|44
21
+ ||1|C1|e|e|1C|e|05|55
15
22
 
16
- □|A|B|C|D|E|F|G|H|I
17
- 1|*|1 |○|▲|▲|◎|▲|01|01
23
+ ##### 処理後のデータ例 ※希望形です
18
- 2|*|2 |○|▲|▲|◎|▲|02|02
19
- 3|*|3 |○|▲|▲|◎|▲|03|03
20
- 4|*|1 |○|▲|▲|◎|▲|66|77
21
- 5|*|1 |○|▲|▲|◎|▲|88|99
22
24
 
25
+ |A|B|C|D|E|F|G|H|I|
26
+ |:--|:--:|--:|
27
+ ||0|ZZ|||XX||01|11
23
- ### 処理後のデータ例(*=Null) ※希望形です
28
+ ||1|A1|a|a|1A|a|01|11
29
+ ||2|A2|b|b|2A|b|02|22
30
+ ||3|A3|c|c|3A|c|03|33
31
+ ||0|ZZ|||XX||04|44
32
+ ||1|B1|d|d|1B|d|04|44
33
+ ||0|ZZ|||XX||05|55
34
+ ||1|C1|e|e|1C|e|05|55
24
35
 
25
- □|A|B|C|D|E|F|G|H|I
36
+ ## 現状のマクロ(テストデータ)
26
- 1|*|0 |Z|*|*|Z|*|01|01
27
- 2|*|1 |○|▲|▲|◎|▲|01|01
28
- 3|*|2 |○|▲|▲|◎|▲|02|02
29
- 4|*|3 |○|▲|▲|◎|▲|03|03
30
- 5|*|0 |Z|*|*|Z|*|66|77
31
- 6|*|1 |○|▲|▲|◎|▲|66|77
32
- 7|*|0 |Z|*|*|Z|*|88|99
33
- 8|*|1 |○|▲|▲|◎|▲|88|99
34
-
35
-
36
- ### 試したこと
37
-
38
37
  データを処理して空白行の挿入まではネットで調べながらマクロを組めたのですが、
39
38
  「下のセルをコピー」、「複数の条件を設定」で躓いて先に進めません…。
40
39
  高望みは重々承知で知恵をお借りできたら嬉しいです。
41
40
 
41
+ >sazi様
42
+ 以下はテスト用として作成途中のマクロです。
43
+ 質問では"B列の「1」をキー"としていますが、
44
+ テスト段階では以下の処理を行っています。
45
+ ("マークダウンで括る"の認識が間違っていたら申し訳ございません)
46
+
47
+ ・A列(データ毎にナンバリング)を最終行から読んでいき、値が変化したら空白行を挿入
48
+ ・挿入した空白行のB列に文字列"AA"を挿入
49
+ ・(1行目はヘッダーが設定されているので)2行目の空白行は書式設定クリア
50
+
51
+ ▼テストデータ
52
+ |A|B|C|D|E|
53
+ |:--|:--:|--:|
54
+ |1|赤|a|a|A1|
55
+ |2|青|d|d|B1|
56
+ |2|青|d|d|B2|
57
+ |3|黄|e|e|C1|
58
+ |3|黄|e|e|C2|
59
+ |3|黄|e|e|C3|
60
+
61
+ ```ここに言語を入力
62
+ Sub Macro1()
63
+ Dim i As Long
64
+ Dim S As String
65
+
66
+ For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
67
+ If Range("A" & i).Value <> Range("A" & i - 1).Value Then
68
+ Rows(i).Insert
69
+ Cells(i, 2).Value = "AA"
70
+ Cells(i, 3).Value = Cells(i, 1).Value
71
+ End If
72
+ Next i
73
+ Rows(2).ClearFormats
74
+ End Sub
75
+ ```
76
+ 本番データにもあるナンバリングが信頼できるデータではないため、
77
+ できれば質問にある値をキーにしたいです。
78
+
79
+
42
80
  ### 補足情報(FW/ツールのバージョンなど)
43
81
 
44
82
  Excel2010