回答編集履歴

2

修正

2021/08/25 05:46

投稿

jinoji
jinoji

スコア4592

test CHANGED
@@ -1,3 +1,7 @@
1
+ <追記>
2
+
3
+ 引数を渡す形に修正しました。
4
+
1
5
  ```VBA
2
6
 
3
7
  Function SplitFunc(arg1 As Range)
@@ -8,13 +12,15 @@
8
12
 
9
13
  u = UBound(a) + 1
10
14
 
11
- If u > 0 Then arg1.Offset(, 1).Resize(, u).Value = a
15
+ If u > 0 Then ActiveCell.Resize(, u).Value = a
12
16
 
13
17
  End Function
14
18
 
15
19
 
16
20
 
17
21
  Sub test_SplitFunc()
22
+
23
+ Range("G1").Select
18
24
 
19
25
  Call SplitFunc(Range("A1"))
20
26
 
@@ -25,6 +31,8 @@
25
31
  ```
26
32
 
27
33
 
34
+
35
+ Excelのバージョンが最新なら、SPILLを利用することもできます。
28
36
 
29
37
  ```VBA
30
38
 
@@ -38,7 +46,7 @@
38
46
 
39
47
  Sub test_SPLITSPILL()
40
48
 
41
- Range("B1").Formula2 = "=SPLITSPILL(A1)"
49
+ Range("G1").Formula2 = "=SPLITSPILL(A1)"
42
50
 
43
51
  End Sub
44
52
 
@@ -47,6 +55,8 @@
47
55
  ```
48
56
 
49
57
  ---
58
+
59
+ <追記前>
50
60
 
51
61
  こんな感じでどうでしょうか。
52
62
 

1

追記

2021/08/25 05:46

投稿

jinoji
jinoji

スコア4592

test CHANGED
@@ -1,3 +1,53 @@
1
+ ```VBA
2
+
3
+ Function SplitFunc(arg1 As Range)
4
+
5
+ Dim a, u
6
+
7
+ a = Split(arg1.Value, ",")
8
+
9
+ u = UBound(a) + 1
10
+
11
+ If u > 0 Then arg1.Offset(, 1).Resize(, u).Value = a
12
+
13
+ End Function
14
+
15
+
16
+
17
+ Sub test_SplitFunc()
18
+
19
+ Call SplitFunc(Range("A1"))
20
+
21
+ End Sub
22
+
23
+
24
+
25
+ ```
26
+
27
+
28
+
29
+ ```VBA
30
+
31
+ Function SPLITSPILL(arg1, Optional d = ",")
32
+
33
+ SPLITSPILL = Split(arg1, d)
34
+
35
+ End Function
36
+
37
+
38
+
39
+ Sub test_SPLITSPILL()
40
+
41
+ Range("B1").Formula2 = "=SPLITSPILL(A1)"
42
+
43
+ End Sub
44
+
45
+
46
+
47
+ ```
48
+
49
+ ---
50
+
1
51
  こんな感じでどうでしょうか。
2
52
 
3
53
  ```vba