我很好奇是否有辦法讓我的生活更輕松。在 excel 中,我生成了一個總值,比如 750,并且需要從 50,100,200,250,500 的值中找出我需要多少個管道訂單。無論如何讓excel取一個值然后回傳我需要的這些數字中的每一個,所以對于750案例1 500和1 250?
目前解決方案剛剛在我腦海中制定出來
uj5u.com熱心網友回復:
假設您想嘗試按尺寸遞減的順序安裝管道,并且您可以訪問所需的功能,您可以使用 Reduce
正如@Jos Woolley 所指出的,如果總數為 749 之類的東西,這可能不會給您想要的答案。它將盡可能多的值并給出結果 500 200 總計 700(余數 49)。您也許可以通過四舍五入到下一個 50 的倍數來修復它。
對于 823 的示例,您將擁有:
=LET(pipes,{500;250;200;100;50},reqd,CEILING(823,MIN(pipes)),DROP(REDUCE(0,pipes,
LAMBDA(a,c,VSTACK(a,QUOTIENT(reqd-IF(ROWS(a)>1,SUM(DROP(a,1)*TAKE(pipes,ROWS(a)-1)),0),c)))),1))
這給出了 500 200 100=850。
uj5u.com熱心網友回復:
不確定我是否理解這個問題,但讓我們試試。
如果您有 1 450 要除,請使用一個公式將 1 450 與您的最高長度 (750) 相除,然后將其四舍五入。
所以公式應該是這樣的: = rounddown(1 450 / 750; 0)
然后你會得到你需要長度 750 的 1 個的答案。
然后保留有關您剩余多少長度的資訊。所以像這樣的公式:=1 450 - 750 * [上一個公式的答案 = 1]。這將是 700。
然后從同樣的事情重新開始,但將 700 除以 500(第二大尺寸)。
uj5u.com熱心網友回復:
您的問題非常困難:人們可能會想到這個簡單的解決方案,從value_begin
:
amount_of_500 = value_begin DIV 500; // integer division
temp = value_begin - 500 * amount_of_500;
amount_of_250 = temp DIV 250; // again integer division
temp = temp - 250 * amount_of_250;
amount_of_200 = temp DIV 200; // again integer division
temp = temp - 200 * amount_of_200;
...
但是,由于值 200 太接近 250,這將不起作用:只需從value_begin
等于 400 開始(演算法解決方案:250 100 50,而最佳解決方案:200 200)。
你確定你需要 200 和 250 作為可能的數字來除嗎?如果是,那么您在實作此功能時可能會遇到嚴重問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530177.html
標籤:擅长
上一篇:如何修改電源查詢中的列
下一篇:多次重復一個范圍