トップページ > プログラム > 2016年01月21日 > X7n9A0oT

書き込み順位&時間帯一覧

17 位/167 ID中時間01234567891011121314151617181920212223Total
書き込み数0100000000001100000000003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Excel VBA 質問スレ Part39 [転載禁止]©2ch.net

書き込みレス一覧

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


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。