2013-11-21 4 views
1

Я хотел бы выполнить следующую задачу. Есть три столбца данных. Колонка А представляет собой цену, в которой сумма должна храниться менее 100 000 долларов США. Столбец B представляет значение. Столбец C представляет собой имя, привязанное к столбцам A & B.Найти верхние значения n в диапазоне, сохраняя при этом сумму значений в другом диапазоне под значением x

Из 100 строк данных мне нужно найти самые высокие значения 8 в столбце B, сохраняя при этом сумму цен в столбце A менее 100 000 долларов США. И затем верните 8 имен из столбца C.

Можно ли это сделать?

EDIT:

Я попытался решение Solver ж/не повезло. 200 строк выглядят как max w/Solver, и это то, что я сейчас использую. Вот шаги, которые я взял:

  1. Создать столбец называется ранг RANK (B2, $ B $ 2: $ B $ 200) (? Используется столбец D - какова цель этого)

  2. Создать столбец под названием флаг просто положить в нули (используется столбец E)

  3. Создать 3 всего клетки TOTAL_PRICE (= СУММ (А2: А200)), total_value (= СУММ (В2: B200)) и total_flag (= (E2: E200))

  4. Использовать решатель для минимизации total_value (разве это не должно быть максимально?)

  5. Добавить ограничения -Total_price < = 100000 -Total_flag = 8 -Flag клетки являются бинарными

Использование Simplex LP, он просто меняет флаги для первых 8 значений. Однако общая стоимость первых 8 значений составляет> 100 000 долларов США (140 тыс. Долларов США). Я попытался изменить некоторые параметры в параметрах Solver, а также использовать различные методы решения безрезультатно. Я хотел бы опубликовать изображение параметров параметров, но не хватает «репутации».

EDIT # 2:

Первые 5 строк выглядит так, цена идет вниз до ~ $ 6k в нижней части таблицы.

Price  Value  Name   Rank Flag 
$22,538 42.81905675 Blow, Joe  1  0 
$22,427 37.36240932 Doe, Jane  2  0 
$17,158 34.12127693 Hall, Cliff 3  0 
$16,625 33.97654031 Povich, John 4  0 
$15,631 33.58212402 Cow, Holy  5  0 
+0

Вы знаете, как определить приоритеты в столбце B? Например, если бы у вас была возможность сохранить самое высокое значение, но затем выбирая кучу низких чисел (например, 1,50,51,52 и т. Д.) В отличие от возможности выбирать значения от 2-го по 9-й (2,3, 4 и т. Д.), При этом общая сумма ниже $ 100 000. – gtwebb

+0

Как описано в настоящее время: сортировать colB по убыванию, добавить текущую итоговую сумму в зависимости от цены в текущей строке + 7 строк, а затем выбрать первый экземпляр, где эта сумма составляет <100k. –

+0

Я думаю, что проблема здесь в том, что значения не могут быть последовательными в зависимости от того, существует ли прямая связь между ценой и стоимостью. Лучшим решением может быть выбор значений (1,3,8,12 и т. Д.) До (3,4,5,6, ...), которые ваше решение не поймает. Кажется, что вопросы касаются комбинаций из 8 из 100, что означает оптимизацию из огромного количества возможностей 1.9e11. Я не уверен, как это сделать в excel или vba без кучи вложенных циклов, и много времени или решатель должен работать, если количество записей составляет 100 или меньше. – gtwebb

ответ

0

Я дам вам решающее решение в качестве отправной точки. Это связано с созданием дополнительных столбцов и итоговых ячеек. Примечание, решатель ограничен количеством ячеек, которые он может обрабатывать, но будет работать с 100 в любом случае.

Создать столбец Оценка RANK(B2,$B$2:$B$100)

Создать столбец под названием флаг просто положить в нулях

Создать 3 всего клетки TOTAL_PRICE, total_value и total_flag

Используйте решатель, чтобы свести к минимуму total_value

Добавить ограничения -Total_price < = 100000 -Total_flag = 8 -Flag cells ar e binary

Это будет обозначать нужные вам строки, и вы можете захватить имена, как хотите.