Я пытался найти код VBA для перестановки столбцов в соответствии с нашей целью. Я знаю, что Solver, возможно, является решением, но не смог найти никакого решения в сети или Excel. Пример:
Запускается vba, а затем выполняется перекомпоновка примерно так:
Желаемый результат: каждая строка добавляет 5000, число должно быть использовано только один раз. Если у вас есть какие-либо идеи, пожалуйста, дайте совет. (Пожалуйста, игнорируйте результат сложения, он только для объяснения)
решение1
Решение через Solver с использованием метода наименьших квадратов.
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
Найденное решение на скриншоте.