2010-10-29 18:07:39 +0000 2010-10-29 18:07:39 +0000
10
10
Advertisement

Эксель: Нашли подмножество чисел, которые добавляют к заданной сумме?

Advertisement

У меня есть столбец чисел (допустим, это A1:A100), и мне нужно найти подмножество из них, которое будет равняться определенной сумме.

Advertisement
Advertisement

Ответы (2)

25
25
25
2010-10-29 18:08:04 +0000

Это возможно с помощью Solver add-in*. Следующие шаги сработали для меня в Excel 2007 и 2010.

  1. Назначьте ячейку для хранения результата (C1 для данного примера) - это целевая ячейка, а столбец, который Excel может использовать для скретч-работы (B1:B100 для данного примера)
  2. В целевую ячейку введите формулу “=SUMPRODUCT(A1:A100,B1:B100)” (без кавычек). Это вычислит сумму A1*B1+A2*B2+…и т.д.
  3. Выберите пункт Open solver (вкладка Data, группа Analysis)
  4. Целевая ячейка должна быть очевидной ($C$1 для данного примера)
  5. Для параметра ‘Equal To:’ выберите ‘Value of:’ и введите желаемое значение
  6. В ‘By Changing Cells’ введите “$B$1:$B$100” (без кавычек, и может понадобиться самостоятельно инициализировать эти значения до 0)
  7. Добавьте ограничение к ячейкам, которые могут быть изменены. В выпадающем списке выберите ‘bin’ (двоичный). Это ограничивает значения этих ячеек 0 (удаление соответствующей ячейки А из суммы) или 1 (добавление соответствующей ячейки А к сумме).
  8. Нажмите кнопку “Разрешить” и подождите. Числа, которые являются частью подмножества, которое вы ищете, будут иметь значение 1 в столбце В


Если решатель занимает много времени, вы можете помочь ему, удалив строки, которые явно не будут работать (итог в долларах, и только одна строка имеет ненулевые центы)


Бонус: Вы можете автоматически выделить ячейки, которые вы ищете, добавив к этим ячейкам условное форматирование. Выберите все ячейки, которые необходимо отформатировать, а также (Главная вкладка)>>(Группа стилей)>>Conditional formatting>>Новое правило выберите ‘Использовать формулу для определения ячеек, которые необходимо отформатировать’. В формулу введите ‘=$B1=1’ (без кавычек), который будет оценивать до истины, если соответствующая строка в столбце B равна 1. Для формата можно добавлять все, что угодно (полужирный, курсив, зеленая заливка и т.д.).

Другой простой способ найти важные строки - сортировка столбца B Z->A, и все 1 будут наверху.


* С помощью этих шагов можно установить надстройку solver

  1. Нажмите кнопку Microsoft Office, а затем выберите Параметры Excel.
  2. Нажмите кнопку Add-Ins (Дополнения), а затем в окне Manage (Управление) выберите Excel Add-ins (Дополнения Excel).
  3. Нажмите Вперед.
  4. В поле Доступные дополнения установите флажок Добавления в Solver, а затем нажмите ОК. (Если надстройка Solver отсутствует в списке доступных надстроек, нажмите Обзор, чтобы найти надстройку).
  5. Если появится запрос на то, что надстройка Solver в настоящее время не установлена на Вашем компьютере, нажмите Да для ее установки.
2
2
2
2012-12-30 02:41:03 +0000

Существует недорогая надстройка Excel SumMatch , которая выделит подмножество чисел, которые складываются до целевой суммы.

Advertisement

Похожие вопросы

6
13
10
8
7
Advertisement