Страницы: 1
RSS
Прекращение пересчёта функции СЛУЧМЕЖ
 
Доброго дня всем!
Необходимо, что бы функция генерировала случайное число только один раз.

Уважаемый пользователь Казанский предложил решение;
Цитата
...вообще, однократно действующую СЛУЧМЕЖДУ для ячейки С4 можно изготовить таким образом:
=ЕСЛИ(C4=0;СЛУЧМЕЖДУ(8;12);C4)
Была тут недавно по этому поводу мощная тема - vba надо написать функцию, которая случайно генерирует значение только 1 раз  (жаль, похоже автор не дождался решения своей задачи).
Мне не совсем понятно что и как с "Предварительно надо включить итеративные вычисления и установить предельное число итераций =1." , так как моя формула чем-то похожа, полагаю что не хватает этого какого-то интервального вычисления. С макросами пока не работаю, поэтому, к сожалению, этот вариант решения не рассматриваю пока.

В моей таблице формула выглядит так:
Код
ЕСЛИ(P10="";0;ЕСЛИ($S$14-$C$14>0;СЛУЧМЕЖДУ(($S$14-$C$14)/2;$S$14-$C$14);СЛУЧМЕЖДУ(1;110)))

И каждый раз когда происходят какие-либо изменения происходит генерация случайных чисел. Нужно заметить, что генерация происходит даже после изменений которые ни как не связаны с этой ячейкой (формулой в ячейке), причем генерация происходит даже от простого переключения вкладок между таблицами.

Пытаюсь найти решение, но пока ничего не выходит )) Помогите пожалуйста.

З.Ы. В примере поставил отдельный выпадающий список (ячейка I3), так вот генерация происходит даже от того что я выбираю какието значение из него, хотя в формуле он ни как не участвует...
 
APavlik, здравствуйте! Обычно сначала идёт приветствие, а потом уже ссылки и прочее  :D

Подытожим: как я вам уже сказал ранее, "функция на то и функция, чтобы пересчитываться", а отсюда следует, что вам нужно зафиксировать значение после его расчёта. Проще всего это сделать ручками, вставив результат значением

В чём ещё вопрос?
Изменено: Jack Famous - 21.10.2019 12:52:51
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
вопрос только в том, что бы это как то автоматизировать. это - или ограничить генерацию случайных чисел, или подстановка значений, но АВТОМАТИЧЕСКИ... возможно я по прежнему пока не понимаю в чем решение...

как я увидел в предложенном мне, нужно каждое место где работает функция СЛУЧМЕЖ переводить в формат значение поставив ПКМ.

у меня, как показано на скрине, таких мест и формул очень много. в примере показан только один параметр и для 1 из 10 циклов. учитывая, что этот файл таблиц и так "атомная станция из картона" ;)) сложности с ручной подстановкой значений очевидна, поэтому ищу решения... может быть нужно отказаться от СЛУЧМЕЖ  и использовать другой метод генерации случайных значений? если такой есть подскажите, пожалуйста.

ЗЫ. просмотрев видео понимаю, что не один вариант с изменением формул в значения не будет удобен ))
Изменено: APavlik - 21.10.2019 14:49:10
 
Цитата
APavlik: подстановка значений, но АВТОМАТИЧЕСКИ … другой метод генерации случайных значений
другой метод — это макрос. Макрос может использовать эту функцию внутри кода или рассчитывать другим образом, но главное, что результат он может вставлять значением.

Дальше нужно разобраться с вариантом запуска макроса: это может событие листа/книги, кнопка или универсальный макрос. Для первых двух нужно заранее определить, что проверять и что выводить в случае чего, а для универсального предполагается, что он запрашивает 2 аргумента и вставляет результат =СЛУЧМЕЖДУ(арг; арг2) в активную ячейку.
Изменено: Jack Famous - 21.10.2019 14:35:23
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Похоже наступил момент, когда нужно начать разбираться макросами... )) Спасибо за внимание!

Теперь буду вы этой теме выкладывать варианты решений, которые найду, или же, возникающие в процессе вопросы.
 
APavlik, пример макроса по событию. Если что-то изменилось в голубых ячейках, то в активную ячейку (из них) проставится результат по подобию вашей функции
В модуле листа
Изменено: Jack Famous - 21.10.2019 16:12:32
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
1. сгенерируйте случайные значения
2. скопируйте ячейки сами на себя как значения
3. все
Изменено: Ігор Гончаренко - 21.10.2019 16:18:04
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Доброго дня всем!

Пошел самым простым способом записи макроса через рекодер. Задача перевести некоторые результаты в значения путем копирования и в ставки значений. Но при запуске макроса выдает сообщение с ошибкой 1004 о том что ячейки должны быть одинакового размера, а в коде выделяет желтым всю четвертую строку:

Sub ПервыйХод()
'
' ПервыйХод Макрос
'
' Сочетание клавиш: Ctrl+й
'
   Range("T14").Select
   Selection.Copy
   Range("S14").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Range("T18").Select
   Application.CutCopyMode = False
   Selection.Copy
   Range("S18").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Range("D14").Select
   Application.CutCopyMode = False
   Selection.Copy
   Range("E14").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Range("D18").Select
   Application.CutCopyMode = False
   Selection.Copy
   Range("E18").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
End Sub

Ячейки сделал все одинакового размера, но проблема не решена - макрос не хочет запускаться (( Не пойму что не так и что нужно добавить или изменить.
Страницы: 1
Наверх