重新排列列以得出等於 5000 個或兩三個單元格 vba 的最佳組合

重新排列列以得出等於 5000 個或兩三個單元格 vba 的最佳組合

我一直在嘗試尋找 vba 程式碼來重新排列列以匹配我們的目標,我知道求解器可能是一個解決方案,但在網路或 Excel 上找不到任何解決方案。例 :

在此輸入影像描述

vba 運行然後重新排列為如下所示:

在此輸入影像描述

期望的結果是,每行加起來為 5000,數字只需使用一次。如果您有任何想法請指教。 (請忽略加法結果,僅供說明)

答案1

使用最小平方法透過求解器求解。

在此輸入影像描述

A2:B7, F1 - source data
C2:C7 - the result (initial values are 1 for all cells)

公式:

B8=SUM(B2:B7)
F2=ROUND(B8/F1,0)
F3=B8/F2
H2=IF(ROW()>$F$2+1,"",ROW()-1) - drag down till H7
I2=SUMIF($C$2:$C$7,H2,$B$2:$B$7) - drag down till I7
J2=IF(I2=0,0,(I2-$F$3)^2) - drag down till J7
J8=SUM(J2:J7)

求解器參數:

Optimization: $J$8 => minimal value
Altered cells: $C$2:$C$7
Restrictions: $C$2:$C$7 is integer
              $C$2:$C$7 >= 1
              $C$2:$C$7 <= $F$2

截圖上找到的解決方案。

相關內容