回答編集履歴
1
サンプルコード追記
answer
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
そもそもActiveCellを対象に処理をするという発想から変えましょう。
|
2
2
|
非アクティブでも処理は可能です。対象セルを変数に入れて処理をするという発想で行きましょう。
|
3
|
+
|
3
|
-
現状のコードはたぶんピント外れです。
|
4
|
+
また、現状のコードはたぶんピント外れです。配列が逆順になっているということはないです。行をそゅう入してますが、それがおかしいので順番もおかしくなっているのです。きれいな逆順になっているわけではないので、逆にいれていけば解決するという問題ではないです。
|
5
|
+
|
4
6
|
具体的にどのようなデータがあって、どのような結果が欲しいのかまずは、言葉とデータ例で説明してください。
|
5
7
|
|
6
8
|
やりたいことは、
|
@@ -59,4 +61,40 @@
|
|
59
61
|
| | はひふへ |
|
60
62
|
|
61
63
|
上記の推測であってますか。
|
62
|
-
違っているなら、上記のような感じで、仕様が明確に分かるように説明してください。
|
64
|
+
違っているなら、上記のような感じで、仕様が明確に分かるように説明してください。
|
65
|
+
|
66
|
+
サンプルコード追記
|
67
|
+
---
|
68
|
+
上記の仕様だとして、サンプルコードを作成してみました。
|
69
|
+
前回の回答からロジックも大幅に見直しました。
|
70
|
+
|
71
|
+
|
72
|
+
```vba
|
73
|
+
Sub Macro1()
|
74
|
+
|
75
|
+
DataSplitInsert ActiveSheet.Range("A1")
|
76
|
+
|
77
|
+
End Sub
|
78
|
+
|
79
|
+
Function DataSplitInsert(DataCell As Range) As Range
|
80
|
+
Dim Origin As String: Origin = DataCell.Value
|
81
|
+
|
82
|
+
Dim Lines: Lines = Split(Origin, vbLf)
|
83
|
+
Dim i As Long
|
84
|
+
For i = 0 To UBound(Lines)
|
85
|
+
Lines(i) = Mid(Lines(i), 2) '行頭の丸数字を削除
|
86
|
+
Next
|
87
|
+
Origin = Join(Lines, "、")
|
88
|
+
Origin = Replace(Origin, "/A", "、")
|
89
|
+
|
90
|
+
Dim Items: Items = Split(Origin, "、")
|
91
|
+
Dim l As Long: l = UBound(Items)
|
92
|
+
|
93
|
+
Dim c As Range: Set c = DataCell.Offset(, 1) '出力先: DataCellの右の列
|
94
|
+
c.Offset(1).Resize(l - 1).EntireRow.Insert '追加件数分行挿入
|
95
|
+
c.Resize(l).Value = WorksheetFunction.Transpose(Items)
|
96
|
+
Set DataSplitInsert = c.Offset(l)
|
97
|
+
End Function
|
98
|
+
```
|
99
|
+
|
100
|
+
A列の複数のデータを処理するために、処理をFunctionにしました。これをループで呼び出せば、複数データ処理にできます。
|