如何用excel在一排數字中找出五個相加為一定數值的程式

例如a=10 ,b=12, c=15, d=18, e=12 , f=15, g=14, h=9, i=14, j=5, k=2

L=6 ,M=8......... 五個相加值為47

如何利用excel寫出任意五個值相加為一定值,並排列出來是那五個

謝謝各位

Update:

可否將排列的數全部顯示在excel上

Update 2:

我不懂VB,借一本巨集書想把數值直行排列就已經弄一整天了

Update 3:

五數總合

47

次數總合

110

212次數由上而下排列

315107713

418714911

512251214

615911104

714116136

89

91447474747

105

112

126

138

144

1520

Update 4:

因字數限制可否寄excel檔給你

1 Answer

Rating
  • 8 years ago
    Favorite Answer

    http://www.funp.net/904358

    下載如上檔案參考,有問題再討論...

    2013-01-23 11:22:06 補充:

    '隨機五個儲存格之和=設定和

    'S.C. Liang 2013/1/23

    Public Sub aa()

    Dim ry() As Long '全部儲存格之陣列值

    Dim ry_f(1 To 5) As Long '隨機抽五個儲存格之位置

    Dim ry_x(1 To 5) As Long '抽五個儲存格之值

    Dim x As Long

    x = InputBox("請輸入五個相加之和", "輸入總和", 47) '設定總和

    column_r = [a1].End(xlToRight).Column '資料之總筆數

    ReDim ry(1 To column_r)

    For i = 1 To column_r '儲存格之值轉入陣列

    ry(i) = Cells(1, i)

    Next

    Do '循環計算總和

    '隨機抽取五位儲存格之位置

    For j = 1 To 5

    重取:

    flage = Int(column_r * Rnd + 1)

    ry_f(j) = flage

    ry_x(j) = ry(flage)

    For m = 1 To j

    If m <> j Then '不比對自己

    If ry_f(j) = ry_f(m) Then GoTo 重取 '抽取位置有重複就重新再隨機取位置

    End If

    Next m

    Next j

    '計算總和

    sum_5 = 0

    For Each r In ry_x

    sum_5 = sum_5 + r

    Next

    Loop Until x = sum_5 '判定計算總和=設定總合就結束循環

    '在儲存格A3填入抽取的儲存格及總和

    [a3] = Chr(64 + ry_f(1)) & "1 + " & Chr(64 + ry_f(2)) & "1 + " & Chr(64 + ry_f(3)) & "1 + " & Chr(64 + ry_f(4)) & "1 + " & Chr(64 + ry_f(5)) & "1 = " & sum_5

    End Sub

    1.本巨集之隨機不重複抽數是用編程指令控制的(意見欄是用EXCEL函數控制)

    2.下載如下檔案參考

    http://www.funp.net/556091

    2013-01-23 15:31:45 補充:

    下載如下檔案參考

    http://www.funp.net/833099

    2013-01-24 08:33:54 補充:

    2013-01-24 06:01:43 補充的說明項,看不懂是什麼意思,

    煩請再陳述清楚一下...

    2013-01-25 09:04:47 補充:

    寄附檔是最好的,順便把要求寫詳細!

    2013-01-25 11:30:39 補充:

    參考如下,不知是否所需!

    http://www.funp.net/455597

Still have questions? Get your answers by asking now.