• ベストアンサー

数列の組み合わせ表

Open Officeを使用して、16の異なる数字の1~3つを合計するという条件ですべての組み合わせ表をつくりたいのですが、どのようにすればそれができるのか全く解らないでいます。 よろしければ皆さんのお知恵をお貸しください。 もうすこし詳しく書くと ・0~255までの数字から任意の16個を設定し(内1つは必ず0) そこから1つ、2つ、または3つ選ぶ ・数字は同じ数字を2度、3度えらんでも構わない ・選んだ数字を合計 ・これをすべての組み合わせで行い一覧表をつくる。 ということがしたいのです。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • soixante
  • ベストアンサー率32% (401/1245)
回答No.1

>0~255までの数字から任意の16個を設定 >内1つは必ず0 ということですから、1~255までの数値から15個選ぶとすると、 629,921,975,126,395,000,000,000 通りのようですから、これらをすべて書き出すと いう意味ではないと思います。 あらかじめ決まった16の数字をもとに、ということでしたら、以下のマクロではどうでしょうか。 あるシートの一番上の行にその16個を書きます。 (A1~P1まで) そのうえで、以下マクロを実行。 (2行目より下に、すべての組み合わせを書いてみます。) Sub zzz() Dim i As Integer, j As Integer, k As Integer Dim Kaz(16) As Variant Dim r As Integer For i = 1 To 16 Kaz(i) = Cells(1, i) Next i r = 2 For i = 1 To 16 For j = 1 To 16 For k = 1 To 16 If Kaz(i) <= Kaz(j) And Kaz(j) <= Kaz(k) Then Cells(r, 1).Value = Kaz(i) Cells(r, 2).Value = Kaz(j) Cells(r, 3).Value = Kaz(k) Cells(r, 4).Value = Kaz(i) + Kaz(j) + Kaz(k) r = r + 1 Else End If Next k Next j Next i End Sub

go_yamn
質問者

お礼

 回答ありがとうございます。  早速使ってみたのですが Kaz(i) = Cells(1, i) のところに矢印が出て、プロシージャの未定義というエラーが帰ってきました。  調べてみたのですが、原因がわかりません。 上の行でVariant型の定義は行われてますし、行の内容的にはセル内1,A~Pの文字をKaz(1~16)に代入っていう物だとはわかるんですが、しかしそこでなぜエラーがでるのかが特定できませんでした。  すみません、その辺の原因もお分かりでしたら、よろしければ教えて頂けるとありがたいです。

その他の回答 (1)

  • soixante
  • ベストアンサー率32% (401/1245)
回答No.2

#1です。お礼コメントをありがとうございました。 恐れ入りますが私が手元でテストしても、そのエラーが出ないんです。 ブックの標準モジュールで実行したのですが。 もう一度新規ブックでトライいただいてはいかがでしょうか。

関連するQ&A

専門家に質問してみよう