Страницы: 1
RSS
Автоматизировать опцию подбор параметра
 

Сразу сообщаю: я не программист. Только пользователь excel.  Сейчас передо мной стала задача. Есть два выражения. В них входит трансцендентная переменная. В выражения входят и другие параметры. Одни из них постоянные. Другие образуют таблицу со ссылкой на массив, изменяющий формулы. До сих пор я пользовался функцией «подобрать параметр» в каждой строке. Сейчас у меня огромное количество строк (более тысячи). Можно ли автоматизировать данную функцию таким образом, чтобы она пересчитывала весь массив, подбирая параметр для каждой строки по движению курсора, как это происходит при вычислении обычных функций, а потом сама пересчитывала при изменении постоянных?

Спасибо за помощь, Сергей

 
Здравствуйте, Сергей!
Цитата
SBK написал: Есть два выражения
Какие?
Цитата
В них входит трансцендентная переменная
Что она из себя представляет и где она?
Цитата
В выражения входят и другие параметры
Какие?
Цитата
Одни из них постоянные
Какие именно?
Цитата
Другие образуют таблицу
Какие и какую таблицу?
Цитата
Можно ли автоматизировать
Наверное, можно, если знать ответы на все вопросы и увидеть файл-пример
 
Прикладываю файл.  
 
А расскажите-ка про решаемую задачу...

Сдается мне, что вы подбором решаете уравнения, которые имеют аналитическое решение.

А, не, не кажется:
если вы подбираете Δc (столбец D) так, чтобы столбец G был равен 1 (т.е. столбец E = столбец F, или a(c-Δc) = d), то
Δc = -(d/a-c)
d зависит только от столбца C (=β) и констант, столбец C зависит только от столбцов A и B (=x, =y).
Соответственно, столбцы E,F,G - вообще не нужны
Кроме того, если вынести константы L*L+R*R и 2LR в отдельные поля - то ускоряется расчёт d

В примере показаны серым цветом ваши только нужные исходные данные, салатовым - новые формулы.
И меняйте потом свои "константы" сколько угодно - результирующие формулы пересчитываются сразу...

Изменено: AndreTM - 19.08.2017 03:30:08
 
Цитата
AndreTM написал:
А расскажите-ка про решаемую задачу...
Задача не аналитическая. Я просто на бегу сформировал вчера вечером файл и сделал в нём неправильную ссылку. В столбце F под косинусом стоит ссылка на столбец D. Так что уравнение трансцендентное. Никуда не деться от подбора параметров. И принципом малости оперировать тоже не получается, чтобы свести решение к приближённому аналитическому.

Сама задача о полях с запаздыванием. Это одна из простейших, начальных задач, на которых мне нужно учиться, чтобы выйти на реальные сложные задачи взаимодействия в динамических полях, хотя и к этому уровню шёл немало.

Спасибо за то, что возитесь со мной. Сейчас нашёл функцию подбора параметров в надстройке, но как его вставить чтобы это работало?

 
Еще раз.
Скрытый текст


Если опять посмотреть на ваше "приравнивание" a(c-Δc) = d, то мы будем иметь уравнение вида
a(c - Δc) = sqrt(L*L + R*R - 2LRcos(β - b(c - Δc))

или, если исходить из условий, что (a, b, c, L, R) > 0, (c-Δc) > 0 (кстати, -pi/2 < β < pi/2)
cos(β - bx) = (-a2/2LR) x*x + (L/2R+R/2L) ; x = (c - Δc)

левая часть - синусоида, правая - парабола (с вершиной над Ox  и ветвями вниз), графически решается на раз, и можно решения найти аналитически, особенно уточнив ограничения для констант.

------------------------------------------------------------

Если по теме - "подбор параметра" можно запускать макросом. То есть просто определить ваш диапазон с данными, и затем циклом перебирать строки, вычисляя значение:
Изменено: AndreTM - 19.08.2017 16:00:04
 
Цитата
AndreTM написал:
Если по теме - "подбор параметра" можно запускать макросом.
Вот это дело! Вы даже не представляете как Вы мне развязали руки. Теперь же с этим макросом я на коне. Когда сделаю, обязательно поделюсь полученным. Поклон до земли за такую нужную и своевременную помощь.
 

Уважаемый AndreTM, извините, что снова беспокою со своими проблемами. У меня была проблема автоматизации подбора параметров для некоторого массива ячеек чтобы

Код
подбор можно было делать за курсором. Вы мне создали макрос для показанного примера. Он имеет вид[/P]
Sub recount()
   Set tbl = ActiveSheet.[a5].CurrentRegion
   Set tbl = Range(ActiveSheet.[a6], tbl.Cells(1, 1).Offset(tbl.Rows.Count - 1))

   For Each cell In tbl.Cells
       cell.Offset(, 6).GoalSeek Goal:=1, ChangingCell:=cell.Offset(, 3)
   Next
End Sub

[P]Макрос прекрасно работал на примере, но как только я изменил расположение и размер массива на странице, программка перестала работать. Я уже её и так, и этак, со словами и без слов – не хочет.

Нашёл программку на этом же форуме в теме «VBA - подбор параметра для диапазона ячеек»

http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=18189

Код
Sub Макрос2()  
Dim Perechen_stavka As Range  
  Dim Perechen_itogo As Range  
  ' присваиваем двум переменным тип диапазон  
  Dim Stavka As Variant  
  Dim Itogo As Variant  
  ' присваиваем двум переменным тип variant  
  Set Perechen_stavka = Range("A6:A89")  
  Set Perechen_itogo = Range("H6:H89")  
 ' присваиваем каждой переменной конкретный диапазон  
  Set Stavka = Range("A6")  
  Set Itogo = Range("H6")  

  ' присваиваем каждой переменной начальное значение - не уверен, что это надо делать честно говоря...  
      For Each Perechen_itogo In Perechen_itogo  
          Range(Perechen_itogo).GoalSeek Goal:=0, ChangingCell:=Range(Perechen_stavka)  
      Exit For  
  Next  

  ' цикл -> обход каждой ячейки в диапазоне и запуск "подбора параметра"  
End Sub

В ней хотя бы понятно, как изменять диапазон, что для меня важно, поскольку по ходу задачи диапазоны будут изменяться. Но она тоже не захотела у меня работать. Говорит, что недопустимые назначения в «глобал». У меня excel 2003. Может в этом проблема? НЕ могли бы помочь мне довести макрос до ума. Или показать, что я должен изменять в исходном, Вашем макросе, чтобы работал при изменении диапазонов ячеек, или довести приведенную программку, чтобы она заработала. Огромное спасибо.

Изменено: SBK - 14.09.2017 10:14:02 (добавление текста)
 
Цитата
_Igor_61 написал:
Что она из себя представляет и где она?
Это расчёт динамических полей.
Цитата
_Igor_61 написал:
Какие и какую таблицу?
Там действительно много параметров. Пример, который я давал вначале, в принципе, отражал задачу, хотя и не в полном объёме, чтобы не морочиться с большими массивами ячеек. Сейчас, когда я начал уже работу с задачей, у меня более 1600 строк. Но задача остаётся чисто для подбора параметре и вручную они прекрасно подбирается для единичных ячеек.
Проблема же макроса, как я вижу, в правильной записи переменных. Запись самой процедуры такая же, как и в стандартной программе excelя.Только нужно правильно записать цикл. Если можете, помогите, пожалуйста.
Изменено: SBK - 14.09.2017 16:49:50
 
Ничего не могу понять. При изменении номеров ячеек макрос перестаёт работать.
Помогите, пожалуйста.  
Изменено: SBK - 18.09.2017 15:54:52
Страницы: 1
Читают тему
Наверх