Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2011, 02:35   #1
ildusfm
Пользователь
 
Регистрация: 07.05.2009
Сообщений: 10
По умолчанию Автоматизация Поиска Решения

Помогите пожалуйста.
Есть таблица с данными. Необходимо автоматизировать процесс поиска решения для каждой строки. Видимо нужен какой то макрос. Почитал у других, так и не разобрался. Нужно получить целевые ячейки (Баланс F1:F63) равной 0, изменяя ячейки pH(G1:G63). По одиночке можно сделать, но долго. Можете помощь написать код, чтобы при запуске эксель поиск решения сделал на все строки.
Спасибо.
Вложения
Тип файла: rar подбор pH.rar (12.7 Кб, 21 просмотров)
ildusfm вне форума Ответить с цитированием
Старый 27.11.2011, 02:44   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

могу написать
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.11.2011, 04:29   #3
ildusfm
Пользователь
 
Регистрация: 07.05.2009
Сообщений: 10
По умолчанию

Проверьте плиз что не так в коде?

Sub Solver()

Dim a, b As Double
Dim i As Integer
Dim s(2 To 63), r(2 To 63) As String
For i = 2 To 63
r(i) = "$F$" & i
s(i) = "$M$" & i

SolverOk SetCell:=r(i), MaxMinVal:=3, ValueOf:=0, ByChange:=s(i), Engine:=1 _
, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:=r(i), MaxMinVal:=3, ValueOf:=0, ByChange:=s(i), Engine:=1 _
, EngineDesc:="GRG Nonlinear"
SolverSolve True
Next i
End Sub
ildusfm вне форума Ответить с цитированием
Старый 27.11.2011, 05:33   #4
ildusfm
Пользователь
 
Регистрация: 07.05.2009
Сообщений: 10
По умолчанию

На сайте microsoft нашел. Оказывается надо было подлючить солвер через tools - references.
Вот рабочий код кому надо.
Sub Solver()

Dim a, b As Double
Dim i As Integer
Dim s(4 To 65), r(4 To 65) As String
For i = 4 To 65
r(i) = "$L$" & i
s(i) = "$M$" & i

SolverOK SetCell:=r(i), MaxMinVal:=3, ValueOf:=0, ByChange:=s(i)

SolverSolve True
Next i
End Sub
ildusfm вне форума Ответить с цитированием
Старый 27.11.2011, 17:09   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Если значение зависит от одного аргумента и нет дополнительных ограничений, лучше использовать Подбор параметра. Это встроенный инструмент Excel, он работает гораздо быстрее и не требует подключения библиотеки:
Код:
Sub Макрос1()
Dim c As Range
Application.MaxChange = 0.0000001 'требуемая точность
For Each c In Range("F2", Range("F1").End(xlDown))
    If Not c.GoalSeek(Goal:=0, ChangingCell:=c(, 2)) Then c.Interior.Color = vbRed
        'пометить красным ячейки, для которых не удалось найти решение
Next
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматизация поиска данных excel файла в другом excel файле с соответствующими пометками! ruotches Microsoft Office Excel 23 18.06.2013 10:24
Форма поиска - задать диапазон поиска VictorM Microsoft Office Excel 9 21.04.2011 00:12
Какой алгоритм используется для ПОИСКА РЕШЕНИЯ в Excel JulOl Помощь студентам 2 31.03.2010 11:59
автоматизация поиска решения Nest1e Microsoft Office Excel 2 20.11.2009 20:32
Помогите правильно написать линейное уравнение по ограничению для поиска решения lena-nonamed Microsoft Office Excel 2 02.03.2009 12:29