![列を並べ替えて、5000 または 2 個と 3 個のセルの vba に相当する最適な組み合わせを見つけます](https://rvso.com/image/1604295/%E5%88%97%E3%82%92%E4%B8%A6%E3%81%B9%E6%9B%BF%E3%81%88%E3%81%A6%E3%80%815000%20%E3%81%BE%E3%81%9F%E3%81%AF%202%20%E5%80%8B%E3%81%A8%203%20%E5%80%8B%E3%81%AE%E3%82%BB%E3%83%AB%E3%81%AE%20vba%20%E3%81%AB%E7%9B%B8%E5%BD%93%E3%81%99%E3%82%8B%E6%9C%80%E9%81%A9%E3%81%AA%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%81%BE%E3%81%99.png)
答え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
スクリーンショットで見つかった解決策。