當前位置:首页 > 趣味生活

幾個數相加等於一個數

Q1:如何設置公式,在Excel中尋找任意幾個數相加等於一個已知數

用公式難度非常高,我曾試過在56個數中找幾個數相加等於某值的,寫了一個VBA程式處理,也要執行四、五個小時。

你要的話請列出來你的數,和求什麼數?讓大家幫你。

Q2:excel中任意幾個數相加 等於一個已知數

可以考慮用一下此方法: 將你的一堆數字放在A列中, 在C列中填入公式C1=A1*B1,向下填充到與A列相對應,另選一單元格或就在C列末尾單元格下一行(假設為C100),對C列求和. 在菜單"工具"->"規劃求解",設置目標單元格為C100,值為"x",可變單元格選為B1:B99,"添加"約束對話框,單元格應用位置為B1:B99,下拉框中選擇為bin,求解. B列中為1的是相加可以等於x數的項.

Q3:如何在一堆數字中找出幾個數,這幾個數的和能夠相加得一個固定值

遍歷即可,我用matlab編的簡單程式,其他語言類似

A=[11.61,25.38,44.8,59.25, 121.66,126.93 ,142.79,155.07,246.24,288.44,389.46,451.14,472.22,557.47,638.59,688.62,746.72,891.7,979.14,1028.66,1038.21,1153.38,1634.87,2760.68];

n=length(A); %求A中元素的個數

for i=1:n-3

for j=i+1:n-2

for k=j+1:n-1

for l=k+1:n

if A(i)+A(j)+A(k)+A(l)==4872.35 %判斷條件

[A(i) A(j) A(k) A(l)]

end

end

end

end

end

我這里預設的和是4872.35

程式執行的結果是44.8、1028.66、1038.21、2760.68

你要的和無解

Q4:請教數組中去任意幾個數相加等於一個固定值

我是用Mathematica來實作這一過程的,給每一個數選還是不選設定為一個未知數,只能取回0或1.再對求和方程按條件求解,能出來所有滿足條件的解,如果有小數,建議全放大,變成整數進行求解,其結果會出來的快些。

Q5:excel中任意幾個數相加 等於一個已知數

先分析一下,任意幾個 ,也就是 取幾個數不固定,可能一個 ,也可能十九個這就需要一個循環假設現在循環到10 了 任意取10個數, 19個里面任意取10個數,也就是19個中取10個的組合 =COMBIN(19,10)=92378, 循環 連同組合 =SUM(COMBIN(19,ROW(1:19)))=524287 共有524287中情況實際上 就是2的 19次方然後 在這五十多萬種可能中找出符合條件的 ,需要把這五十多萬種組合逐一列出 很有難度啊 首選 構建一個 19位的 2進制數,循環,不夠是9位時 前面補零,對應的位數與 這個19個數對應 如果是零 這個數不取,如果是1 取 這樣 所有的組合都會出現 我慢慢想想 等我 !我很有可能 解決這個問題! 我拿 100以內的19個數測試的,看那幾個數的和可以等於345,代碼寫出來了 循環太大,會報錯 , 如果把524287 縮小到200以內就沒問題了,就不會報錯了,但是循環次數就不夠了,不能窮盡找出所有組合, 如果要是 10個數 中 取 應該不會有問題 反正代碼理論沒有問題,我半個小時寫完代碼,用了三個小時時間才查出來是 循環過大! Sub 取任意數() Dim i As Long Dim tt As String Dim su1 As Long Dim su2 As Long Sheets("Sheet1").Select For i = 1 To 225 tt = Application.WorksheetFunction.Rept(0, 18) & Application.WorksheetFunction.Dec2Bin(i) For j = 1 To 19 su1 = Mid(Right(tt, 19), 20 - j, 1) * Cells(j, 1) su2 = su1 + su2 Next j If su2 = 345 Then For k = 1 To 19 aa = Mid(Right(tt, 19), 20 - k, 1) * Cells(k, 1) If aa <> 0 Then Cells(m + 1, b + 3) = aa b = b + 1 End If Next k m = m + 1 b = 0 End If su2 = 0 Next i End Sub

猜你喜歡

更多