[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『決められた平均値になるような組み合わせについて。』(まさゆき)
予め決められた平均値があります。例えば14,508
1 12,000
2 14,700
3 16,000
4 19,200
5 11,400
6 13,800
7 15,100
8 18,000
9 10,300
10 11,400
11 13,800
12 15,100
13 16,300
14 12,300
15 13,500
16 14,700
17 17,200
18 18,600
上記の1〜18までの数値を決められた平均値(14,508)になるように組み合わせを行うにはどのような関数を使えばいいのかご教示下さい、宜しくお願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
14,508に1から18をかける場合、その下二けたが「00」になることはないため1から18のどの組み合わせでも平均値が14,508になることはない。
(A+B)/2 = 14,508 A+B = 14508*2 = 29,016
(A+B+C)/3 = 14,508 A+B+C = 14,508*3 = 43,524
〜 (A+B+C+…+Q+R)/18 = 14,508 A+B+C+…+Q+R = 14,508*18 = 261,144
1から18のどれも下二けたが「00」なため14,508の倍数の下2桁が「00」のものがないと成り立たない。 (ねむねむ) 2014/09/22(月) 14:30
Sub test() Const iMAX = 18 Const iTARGET = 14508 Dim i As Long Dim j As Long Dim iAll As Long Dim iAve As Double Dim iCou As Long Dim iDim(iMAX - 1) As Long Dim iC As Long
iC = 3
For i = 1 To iMAX iDim(i - 1) = Cells(i, 1).Value Next i
For i = 1 To (2 ^ iMAX) - 1 iCou = 0 iAll = 0 For j = 0 To iMAX - 1 If (i And (2 ^ j)) <> 0 Then iCou = iCou + 1 iAll = iAll + iDim(j) End If Next j If 0 < iCou Then iAve = iAll / iCou If Fix(iAve) = iTARGET Then For j = 0 To iMAX - 1 If (i And (2 ^ j)) <> 0 Then Cells(j + 1, iC).Value = "○" End If Next j iC = iC + 1 End If End If Next i End Sub (???) 2014/09/22(月) 16:18
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.