Excel - автоматическое увеличение числа до поиска решения (без использования VBA и таблицы данных) - PullRequest
0 голосов
/ 17 июня 2020

Я опытный пользователь Excel, но я не хочу использовать VBA или таблицу данных для решения указанной ниже проблемы.

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

Вот проблема: в ячейке B1 решение - 15,621 (есть и другие решения по этому номеру тоже)

Однако я хочу начать поиск с 1 и каждый раз добавлять 1 или каждый раз добавлять 5 (если возможно, 1, 6, 11 и т.д. c.), пока ячейка D17 не станет равной 1. Она в конечном итоге будет равна 1, скажем, много раз меньше миллиона.

Я могу изменить начальную точку с 20 000 и далее, и т. д. c.

Возможно ли это? Goal Seek не находит его, так как формулы используют Mod, Min, Max ... таким образом, не сходятся линейно. или Excel Solver.

Это известная математическая задача (http://mathcentral.uregina.ca/QQ/database/QQ.02.06/meadow4.html), но я хочу использовать Excel.

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

enter image description here

1 Ответ

1 голос
/ 10 июля 2020

«Итеративное вычисление» Excel может помочь. Как видно здесь: ablebits.com: «Циклическая справка в Excel - как проверить, найти, включить или удалить»

Итерационные вычисления допускают циклические зависимости ваших формул. В Excel 2010 вы найдете его в «Параметры Excel» -> «Формулы» -> «Параметры расчета» -> «Включить итеративный расчет». Примечание. 32767 - это максимальное количество итераций в Excel 2010

В вашем примере вы можете иметь переменную в (скажем) B2 , изначально установленную на ваш минимум. B1 затем устанавливается как B2 , пока решение не найдено. Если решение найдено, оно устанавливается на B2 минус приращение. Теперь, если вы измените B2 на B1 плюс приращение, итеративное вычисление Excel должно остановиться на вашем решении.

пример:

B2 =   1
B1 =   =IF(D17<>1, B2, B2-1)
B2 =   =B1+1

Обновление (на основе комментария @ihightower) :

Итерационное вычисление останавливается, когда значения изменяются ниже определенного порога " Максимальное изменение »(по умолчанию: 0,001) или когда выполнено« Максимальное количество итераций ». В конце каждого прогона B2 уже содержит начальное значение для следующего. Чтобы вызвать следующее итеративное вычисление, go в ячейке результата D17 , нажмите [F2], а затем [Ctrl] + [Enter].

Чтобы перейти к новому начальному значению, установите B2 на новое минимальное значение, а затем на = B1 + 1.

...