回答編集履歴

2

syuusei

2017/01/17 00:20

投稿

jawa
jawa

スコア3013

test CHANGED
@@ -148,7 +148,7 @@
148
148
 
149
149
  '縦・横・高さのループ処理(配列の個数だけループ処理)
150
150
 
151
- For iIdx = 0 To UBound(aryVal)
151
+ For iIdx = 0 To UBound(aryVal) - 1
152
152
 
153
153
 
154
154
 

1

tuiki

2017/01/17 00:20

投稿

jawa
jawa

スコア3013

test CHANGED
@@ -97,3 +97,79 @@
97
97
 
98
98
 
99
99
  参考になれば幸いです。
100
+
101
+
102
+
103
+ 追記:サンプルコード
104
+
105
+ サンプル公開を控えたのは丸投げ対策でしたが、marutokiさんからは学習意欲がみられるのでサンプルコードを提供させていただきます。
106
+
107
+
108
+
109
+ ```
110
+
111
+ Sub test()
112
+
113
+
114
+
115
+ Dim sht As Worksheet '対象シート
116
+
117
+ Set sht = ActiveSheet '今回はとりあえずアクティブシートを対象シートに設定
118
+
119
+
120
+
121
+ Dim iRow As Integer '行ループ
122
+
123
+ Dim iIdx As Integer '配列から値を取得する
124
+
125
+
126
+
127
+ Dim strVal As String 'F列セル値
128
+
129
+ Dim aryVal() As String '分割結果
130
+
131
+
132
+
133
+ '2行目からF列最終行までループ処理
134
+
135
+ For iRow = 2 To sht.Cells(Rows.Count, "F").End(xlUp).Row
136
+
137
+ 'F列から値を取得
138
+
139
+ strVal = sht.Cells(iRow, "F").Value
140
+
141
+
142
+
143
+ '取得した値を"x"で分割
144
+
145
+ aryVal = Split(strVal, "x")
146
+
147
+
148
+
149
+ '縦・横・高さのループ処理(配列の個数だけループ処理)
150
+
151
+ For iIdx = 0 To UBound(aryVal)
152
+
153
+
154
+
155
+ If iIdx > 2 Then Exit For '3回以上はループしない。(1x2x3x4でも3まで処理)
156
+
157
+
158
+
159
+ '1回目:V列(22列)、2回目U列(21列)、3回目T列(20列)に値を出力
160
+
161
+ sht.Cells(iRow, 22 - iIdx).Value = aryVal(iIdx)
162
+
163
+
164
+
165
+ Next iIdx
166
+
167
+
168
+
169
+ Next iRow
170
+
171
+
172
+
173
+ End Sub
174
+
175
+ ```