在excel中找尋不同數字的相加

2009-06-13 1:36 am
若用excel打入6個數字如100、100、150、250、200、300,想找尋哪幾個數字相加等於500,想excel得出以下的結果 :
(a)100、100、300
(b)100、150、250
(c)200、300
更新1:

對不起,不明白shin_bingo_dog的program... 在excel表中應怎樣寫入程式?

回答 (3)

2009-06-17 12:37 am
✔ 最佳答案
http://www.funp.net/249848

Download "Combination.xls" 後在黃格輸入你的數字,按"分析"數字便會出現.
注:如果只有十個數字,電腦要考慮1023個組合,如果有20個數字,則要考慮1048575個組,所以我的巨集只容許20個數字,但分析時間已經很長.

另分析前我會先把數字由小到大排列好,避免有重覆組合出現.
2009-06-13 5:50 pm
如數字較多, 此類題目是海量,
假如 a1: a100 分別是 1 至 100, 找尋相加等於100, 總共便有40多萬組答案, 只將答案放在excel, 文件已近20MB
2009-06-13 2:09 pm
已完成, 請試一試以下的網址:
http://www.geocities.com/shin_bingo_dog/Random_addition_1.xls
program 如下:
Dim a(6)

Sub Macro1()
'
x1 = Cells(1, 1): x2 = Cells(2, 1): x3 = Cells(3, 1)
x4 = Cells(4, 1): x5 = Cells(5, 1): x6 = Cells(6, 1)
y = Cells(1, 2)
st = 8
For i1 = 0 To 1
For i2 = 0 To 1
For i3 = 0 To 1
For i4 = 0 To 1
For i5 = 0 To 1
For i6 = 0 To 1
a(1) = i1: a(2) = i2: a(3) = i3: a(4) = i4: a(5) = i5: a(6) = i6
s = x1 * i1 + x2 * i2 + x3 * i3 + x4 * i4 + x5 * i5 + x6 * i6
If s = y Then
c = 1
st = st + 1

For i = 1 To 6

If a(i) = 1 Then
Cells(st, c) = Cells(i, 1)
Cells(st, c + 1) = "+"
c = c + 2
End If

Next i

Cells(st, c - 1) = "="
Cells(st, c) = s

End If


Next i6
Next i5
Next i4
Next i3
Next i2
Next i1

End Sub

基本上, 因有兩個 100, 所以solution 有重覆item 出現. 如有需要, 可加多一兩句, 使重覆item 只出現一次.


2009-06-15 10:06:57 補充:
可以在我給出的網址 download 我的 excel file.
在 工具 --> 巨集 --> visual basic 編輯器
就會找到這個 program 了.


收錄日期: 2021-04-23 23:21:12
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20090612000051KK01285

檢視 Wayback Machine 備份