回答編集履歴

1

サンプルコード追記

2020/02/07 01:36

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
  非アクティブでも処理は可能です。対象セルを変数に入れて処理をするという発想で行きましょう。
4
4
 
5
+
6
+
5
- 現状のコードはたぶんピント外れです。
7
+ また、現状のコードはたぶんピント外れです。配列が逆順になっているということはないです。行をそゅう入してますが、それがおかしいので順番もおかしくなっているのです。きれいな逆順になっているわけではないので、逆にいれていけば解決するという問題ではないです。
8
+
9
+
6
10
 
7
11
  具体的にどのようなデータがあって、どのような結果が欲しいのかまずは、言葉とデータ例で説明してください。
8
12
 
@@ -121,3 +125,75 @@
121
125
  上記の推測であってますか。
122
126
 
123
127
  違っているなら、上記のような感じで、仕様が明確に分かるように説明してください。
128
+
129
+
130
+
131
+ サンプルコード追記
132
+
133
+ ---
134
+
135
+ 上記の仕様だとして、サンプルコードを作成してみました。
136
+
137
+ 前回の回答からロジックも大幅に見直しました。
138
+
139
+
140
+
141
+
142
+
143
+ ```vba
144
+
145
+ Sub Macro1()
146
+
147
+
148
+
149
+ DataSplitInsert ActiveSheet.Range("A1")
150
+
151
+
152
+
153
+ End Sub
154
+
155
+
156
+
157
+ Function DataSplitInsert(DataCell As Range) As Range
158
+
159
+ Dim Origin As String: Origin = DataCell.Value
160
+
161
+
162
+
163
+ Dim Lines: Lines = Split(Origin, vbLf)
164
+
165
+ Dim i As Long
166
+
167
+ For i = 0 To UBound(Lines)
168
+
169
+ Lines(i) = Mid(Lines(i), 2) '行頭の丸数字を削除
170
+
171
+ Next
172
+
173
+ Origin = Join(Lines, "、")
174
+
175
+ Origin = Replace(Origin, "/A", "、")
176
+
177
+
178
+
179
+ Dim Items: Items = Split(Origin, "、")
180
+
181
+ Dim l As Long: l = UBound(Items)
182
+
183
+
184
+
185
+ Dim c As Range: Set c = DataCell.Offset(, 1) '出力先: DataCellの右の列
186
+
187
+ c.Offset(1).Resize(l - 1).EntireRow.Insert '追加件数分行挿入
188
+
189
+ c.Resize(l).Value = WorksheetFunction.Transpose(Items)
190
+
191
+ Set DataSplitInsert = c.Offset(l)
192
+
193
+ End Function
194
+
195
+ ```
196
+
197
+
198
+
199
+ A列の複数のデータを処理するために、処理をFunctionにしました。これをループで呼び出せば、複数データ処理にできます。