Переставьте столбцы так, чтобы получить наилучшие комбинации, которые равны 5000 или двум и трем ячейкам vba

Переставьте столбцы так, чтобы получить наилучшие комбинации, которые равны 5000 или двум и трем ячейкам vba

Я пытался найти код 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

Найденное решение на скриншоте.

Связанный контент