Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


706 / 13645 ツリー ←次へ | 前へ→

【78865】フラグが立つ全通りの表示 あらけい 17/2/14(火) 0:14 質問[未読]
【78866】Re:フラグが立つ全通りの表示 γ 17/2/14(火) 7:37 発言[未読]
【78867】Re:フラグが立つ全通りの表示 γ 17/2/14(火) 20:52 回答[未読]
【78868】Re:フラグが立つ全通りの表示 γ 17/2/14(火) 22:48 発言[未読]
【78869】Re:フラグが立つ全通りの表示 あらけい 17/2/14(火) 23:42 お礼[未読]
【78870】Re:フラグが立つ全通りの表示 γ 17/2/14(火) 23:51 発言[未読]

【78865】フラグが立つ全通りの表示
質問  あらけい  - 17/2/14(火) 0:14 -

引用なし
パスワード
   よろしくお願いします。

3回に1回必ず当たるくじを複数回おこないます。
このとき、はずれはセルに「0」を、当たりは「1」としてフラグを立てます。

1回目 1 0 0
2回目 0 1 0
3回目 0 1 0

3回おこなうケースだと27通りが考えられると思います。
(x回では、3^x通りだと思いますが…)

このフラグを使って計算をしたいと考えており
要は、全パターンを順番に表示させていきたいのです。

よい方法があれば、ご教示願います。

【78866】Re:フラグが立つ全通りの表示
発言  γ  - 17/2/14(火) 7:37 -

引用なし
パスワード
   >3回に1回必ず当たるくじ
というのもどういうものかと思いますし、
>1回目 1 0 0
のそれぞれの1,0,0の意味もわかりません.
一つだけ当たりの入った籤を、3人が同時に引くと言うことですか?
それを3回繰り返す時の、全パターンを列挙する、と。

For i = 1 to 3
  For j = 1 to 3
   For k = 1 to 3
     i,j,kを使って作業をする
   Next
  Next
Next
というのが基本形でしょう。
ご自分でトライしてみて、つまったところでまた質問してください。

【78867】Re:フラグが立つ全通りの表示
回答  γ  - 17/2/14(火) 20:52 -

引用なし
パスワード
   > このフラグを使って計算をしたいと考えており
ということは、
> 1回目 1 0 0
> 2回目 0 1 0
> 3回目 0 1 0
別に上のような表を書くこと自体が
最終的な目標ではないんでしょうかねえ。
もう少し実行したいことを明確に書いて欲しい。

返事も無いから、また放置組なんでしょうか。
まあいいや。

とりあえず、その表を書くコードを示して置こう。
A1:A3に○回目という文字列を入れた状態で、
以下を実行してください。

Sub test()
  Dim i As Long
  Dim j As Long
  Dim k As Long
  Dim p As Long
  p = 1
  For i = 1 To 3
    For j = 1 To 3
      For k = 1 To 3
        Call do_task(i, j, k, p)
      Next
    Next
  Next
End Sub
Function do_task(i, j, k, p)
  p = p + 4
  Cells(1, 1).Resize(3, 1).Copy Cells(p, 1)
  Cells(p, 2).Resize(3, 3).Value = 0
  Cells(p, 1 + i).Value = 1
  Cells(p + 1, 1 + j).Value = 1
  Cells(p + 2, 1 + k).Value = 1
End Function

【78868】Re:フラグが立つ全通りの表示
発言  γ  - 17/2/14(火) 22:48 -

引用なし
パスワード
   引数の型宣言を忘れていました。
Function do_task(i As Long, j As Long, k As Long, p As Long)

【78869】Re:フラグが立つ全通りの表示
お礼  あらけい  - 17/2/14(火) 23:42 -

引用なし
パスワード
   回答ありがとうございます

>別に上のような表を書くこと自体が
>最終的な目標ではないんでしょうかねえ。
>もう少し実行したいことを明確に書いて欲しい。

最終的な目的はこのフラグを使って計算をおこない
もっとも高い値が出る並びを知りたいことです。

言葉足らずで申し訳ございません。

まさに、おこないたかったことができました。
ありがとうございます。

これを基に、3回だけでなく複数回おこなったときの
プログラムを考えたいと思います。

非常に助かりました!

【78870】Re:フラグが立つ全通りの表示
発言  γ  - 17/2/14(火) 23:51 -

引用なし
パスワード
   実行したいことを端的に説明したほうがよいでしょう。
配列などを上手く使って、繰り返し計算をするということですね。

籤だとか余計な話を入れないほうがよい。
まあ、コードを作るということは、機械に向かって説明するということですよ。
人間に向かって説明が難しいなら、
機械にはさらに理解してもらえないでしょう。

706 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free