質問: N個の中からr個の組み合わせを列挙するプログラムを、二進数表記を応用して作りました。
回答: (n)C(r)で済むのに2^n回している Cellsに大量にアクセスしている を何とかすれば多少は早くなるかと。 VBScript でのみ検証済みで Excel では未検証ですが多分 動くかと。 Option Explicit Sub nc(n, r, c()) Dim j, k For j = r To 0 Step -1 c(j) = c(j) + 1 For k = j + 1 To r: c(k) = c(k - 1) + 1: Next If c(j) <= n - r + j Then Exit For Next End Sub Sub Cmb() Dim n, r, m, i, j, c, o n = 15 r = 8 m = WorksheetFunction.Combin(n, r) ReDim c(r), o(m, n) For j = 0 To r: c(j) = j: Next o(0, 0) = "10進表記" For j = 1 To n: o(0, j) = "要素" & j: Next i = 1 Do While c(0) <= 0 For j = 0 To n: o(i, j) = 0: Next For j = 1 To r o(i, 0) = o(i, 0) + 2 ^ (c(j) - 1) o(i, n + 1 - c(j)) = 1 Next i = i + 1 nc n, r, c Loop Cells(1, 1).Resize(m + 1, n + 1).Value = o End Sub