Страницы: 1
RSS
Использование надстройки "Поиск Решения" для заполнения "Таблицы подстановки с 2-я переменными"
 
Добрый день. Прошу помощи у знатоков.
Задача:
1. Есть заданные две шкалы значений "А" и "В" (аналог таблицы подстановки с 2-мя переменными) - смотри Таблица №2
2.Надстройкой "Поиск решения" проводиться поиск МАКС. СУММЫ Вероятностей. В данном примере, поиск Максимального значения суммы Блока 1 и 2.
3. Необходимо автоматически подставить значения шкал из Таблицы №2 в ячейки "А "и "В" - запустить Поиск Решения - ПОСЛЕ ИТЕРАЦИОННОГО ЗАПУСКА надстройки "Поиск Решения" нужно заполнить ТАБЛИЦУ №2, т.е. факически заполненная Таблица 2 - это Частные решения "Поиска решения" при заданных значениях А и В.
4.Если в ходе Работы Поиска Решения нет допустимого решения - подставить или 0 или "НЕТ" - здесь не важно.
В итоге, будет выбрано наилучшее (по максимуму) сочитание Ячеек А и В.
Изменено: imsk - 25.03.2020 16:21:00
 
Уважаемые знатоки, есть ли мысли какие-либо?
Изменено: imsk - 26.03.2020 12:03:12
 
imsk, Вас интересует решение исключительно с помощью "Поиск решения"* Или устроит любой вариант?
 
Юрий, да, наверно только эта надстройка "Поиск решения" (ПР), т.к. она ищет "оптимум" при заданный ограничениях (изменяются в ручную). И нужно потом выбрать (см.п3 выше) наилучшее решение из множества решений надстройки. Дело в том, что (наверное) нужно будет менять всю модель, если не использовать надстройки ПР.

А как вы предлагаете?
 
Может есть аналоги решений?
Здесь, на мой взгляд, главное создать алгоритм:
- подставить последовательно значения А и В из шкал таблицы 2
- запустить ПР
- результат (из выбранной ячейки, не обязательно целевой) поставить в таблицу 2
= цикл
Изменено: imsk - 28.03.2020 11:14:11
 
Procedure too large

Макрос слишком большой (уже на этом размере выдает ошибку)
НО в данном макросе выполнена только 1/3 работы, необходимо еще добавить 3 таких же "размера" кода.

Прошу знатоков помочь.
Как упростить код для возможности его применения.
Изменено: imsk - 28.03.2020 19:35:36
 
Макрос уже нужно смотреть отдельно от файла-примера, т.к. файл- пример в первом сообщении - упрощенный вариант.
Макрос - уже из рабочего файла.
Изменено: imsk - 28.03.2020 19:43:46
 
Решено:
1. разделено на 10 макросов
2. создан макрос, запускающий последовательно макросы от 1.до .10.

Вопрос по оптимизации кода открыт и интересен.

Так, что если будут варианты - спасибо.
 
Цитата
imsk написал:
по оптимизации кода открыт и интересен.
Что тут может быть интересного.
Код
'   Это
   Sheets("Solution").Select
    Range("BQ81").Select
    Selection.Copy
    Sheets("TotalPR").Select
    Range("G4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
     :=False, Transpose:=False
' равнозначно этому
    Sheets("TotalPR").Range("G4").Value=Sheets("Solution").Range("BQ81")
Экономия 6 строк кода
Изменено: doober - 29.03.2020 23:38:06
 
Спасибо за сокращение, но для данного варианта не подойдет.
В коде алгоритм копирования ячейки BQ81 (после работы ПР) в последовательно меняющиеся яч. итоговой таблицы, поэтому G4 (в данном примере) в след. итерации будет G5, G6, G7 .....G27
Тогда, думаю, необходимо делать цикл с предварительной проверкой - Заполнена или нет ячейка G5, G6, G7 .....G27?, но и в этом случает обязательна очистка итоговой таблицы перед началом работы макроса.
Страницы: 1
Наверх