- Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
506 :デフォルトの名無しさん[sage]:2016/01/21(木) 01:06:23.00 ID:X7n9A0oT - >>505
こんな感じか? Sub macro1() r = 1 For r1 = 1 To 5 For r2 = 1 To 8 For r3 = 1 To 5 s = Cells(r1, 1) & Cells(r2, 2) & Cells(r3, 3) Cells(r, 6) = s r = r + 1 Next Next Next End Sub
| - Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
516 :デフォルトの名無しさん[sage]:2016/01/21(木) 12:06:31.84 ID:X7n9A0oT - >>515
そういう場合は再帰を使え
| - Excel VBA 質問スレ Part39 [転載禁止]©2ch.net
520 :デフォルトの名無しさん[sage]:2016/01/21(木) 13:30:20.23 ID:X7n9A0oT - >>515
再帰ってのはこんなふうに書くんだよ ループのネストの段数が不定でも問題なく動く VBAの仕様でデータが300列ぐらいあるとメモリ不足を起こすけど、300列の順列なんて出そうとしたら人類が滅亡するほど時間がかかるんで実用上は問題ない Sub main() Call Recursive(1, "") End Sub Sub Recursive(c As Long, s As String) max_row = Cells(Rows.Count, c).End(xlUp).Row If Cells(max_row, c).Value <> "" Then For r = 1 To max_row Call Recursive(c + 1, s & Cells(r, c)) Next Else Debug.Print s ' データ出力 End If End Sub
|
|