回答編集履歴
1
サンプルコード追記
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にしました。これをループで呼び出せば、複数データ処理にできます。
|