- ベストアンサー
エクセルのプログラムについての質問
- エクセルのプログラムに関する質問です。B列、C列、D列からそれぞれ1つずつランダムに選び、その平均値が19~21の範囲になる組み合わせの数と具体的な組み合わせを求めたいです。
- エクセルのプログラムについて質問です。B列、C列、D列から1つずつランダムに選び、その平均値が19~21の範囲になる組み合わせの数と具体的な組み合わせを教えてください。
- エクセルのプログラムについての質問です。B列、C列、D列からランダムに1つずつ選び、その平均値が19~21の範囲になる組み合わせの数と具体的な組み合わせを知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
>3つの文字の平均値を 19<x<21 の範囲で選び出す 判りにくいようなら平均じゃなく総和で 57<3数の和<63 となる組み合わせを拾っていけば,見た目の数字だけで判断できて見通しも進むように思います。 例えばBが20なら残りは37<c+d<43 同様にBが17なら残りは40<c+d<46 同様にBが21なら残りは36<c+d<42であることですから C+D Bが17 20 21 15+18=33 × × × 15+19=34 × × × 15+20=35 × × × 19+18=37 × × ○ 19+19=38 × ○ ○ 19+20=39 × ○ ○ 22+18=40 × ○ ○ 22+19=41 ○ ○ ○ 22+20=42 ○ ○ × ○は12個 と言った具合ですね。 >コンピュータがランダムに選んだ1つ こちらは何を意図しているのかイマイチ不明ですが,総当たりが一覧できてしまえば,その組合わせのリストからランダムに1行選んで終わりです。 一応出来ると言うことではソルバーなどで探索させる手も考えられますが,意味は無いと思われます。
- Wendy02
- ベストアンサー率57% (3570/6232)
ブルーアタック(総当たり制)方式で、ダブリを排除するという方法です。 '// Sub CombinationTest() Dim i As Long, j As Long Dim n As Long Dim Ar() As String Dim a As Double, b As Double, c As Double Dim av As Double Dim ret As Variant Dim rng As Range '範囲 Set rng = Range("B2:D4") Application.ScreenUpdating = False With rng For i = 1 To 3 For j = 1 To 3 For k = 1 To 3 a = .Cells(i, 1).Value: b = .Cells(j, 2).Value: c = .Cells(k, 3).Value buf = a & ";" & b & ";" & c On Error Resume Next ret = Application.Match(buf, Ar, 0) On Error GoTo 0 If IsError(ret) Or IsEmpty(ret) Then av = (a + b + c) / 3 If 19 < av And av < 21 Then ReDim Preserve Ar(n) Ar(n) = buf n = n + 1 End If End If Next Next Next End With For i = LBound(Ar) To UBound(Ar) 'F2 ~書き込み Cells(i + 2, 6).Resize(, 3).Value = Split(Ar(i), ";") Next Application.ScreenUpdating = True End Sub
お礼
ありがとうございます。 でも、どーーーーーーーーーーしても、頑張ってみましたが、わかりません。。。。 その表示の方法を教えてくださいませんか???? お願いします。