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

回答編集履歴

2

syuusei

2017/01/17 00:20

投稿

jawa
jawa

スコア3020

answer CHANGED
@@ -73,7 +73,7 @@
73
73
  aryVal = Split(strVal, "x")
74
74
 
75
75
  '縦・横・高さのループ処理(配列の個数だけループ処理)
76
- For iIdx = 0 To UBound(aryVal)
76
+ For iIdx = 0 To UBound(aryVal) - 1
77
77
 
78
78
  If iIdx > 2 Then Exit For '3回以上はループしない。(1x2x3x4でも3まで処理)
79
79
 

1

tuiki

2017/01/17 00:20

投稿

jawa
jawa

スコア3020

answer CHANGED
@@ -47,4 +47,42 @@
47
47
 
48
48
  ExcelでもVBAでもないアドバイスになってしまいますが、今回のニーズにマッチしそうだったのでご紹介してみました。
49
49
 
50
- 参考になれば幸いです。
50
+ 参考になれば幸いです。
51
+
52
+ 追記:サンプルコード
53
+ サンプル公開を控えたのは丸投げ対策でしたが、marutokiさんからは学習意欲がみられるのでサンプルコードを提供させていただきます。
54
+
55
+ ```
56
+ Sub test()
57
+
58
+ Dim sht As Worksheet '対象シート
59
+ Set sht = ActiveSheet '今回はとりあえずアクティブシートを対象シートに設定
60
+
61
+ Dim iRow As Integer '行ループ
62
+ Dim iIdx As Integer '配列から値を取得する
63
+
64
+ Dim strVal As String 'F列セル値
65
+ Dim aryVal() As String '分割結果
66
+
67
+ '2行目からF列最終行までループ処理
68
+ For iRow = 2 To sht.Cells(Rows.Count, "F").End(xlUp).Row
69
+ 'F列から値を取得
70
+ strVal = sht.Cells(iRow, "F").Value
71
+
72
+ '取得した値を"x"で分割
73
+ aryVal = Split(strVal, "x")
74
+
75
+ '縦・横・高さのループ処理(配列の個数だけループ処理)
76
+ For iIdx = 0 To UBound(aryVal)
77
+
78
+ If iIdx > 2 Then Exit For '3回以上はループしない。(1x2x3x4でも3まで処理)
79
+
80
+ '1回目:V列(22列)、2回目U列(21列)、3回目T列(20列)に値を出力
81
+ sht.Cells(iRow, 22 - iIdx).Value = aryVal(iIdx)
82
+
83
+ Next iIdx
84
+
85
+ Next iRow
86
+
87
+ End Sub
88
+ ```