В тексте одно и то же число записано несколько раз. Нужно заменить все вхождения этого числа на случайные числа из заданного диапазона.
Например, в тексте 80 раз используется число 9.02, а мне нужно что бы оно каждый раз менялось на случайное число из диапазона 3.00-11.00.
[вложение удалено администратором]
В пункте 3, вместо 9.02 укажите нужное число.
В пункте 5.1.a вместо чисел 3 и 11 подставляйте нужные числа.
Макрос
Sub Макрос()
Dim find_rng As Range, find As find
Dim NewNumber
'1. Отключение монитора. Может это ускорит макрос.
Application.ScreenUpdating = False
'2. Создание объектов для поиска.
Set find_rng = ActiveDocument.Range(0, 0)
Set find = find_rng.find
'3. Настройка поиска.
find.Text = "<9.02>"
find.MatchWildcards = True
find.Wrap = wdFindStop
'4. Настройка функции Rnd, чтобы при каждом запуске макроса генерировались новые последовательности чисел.
Randomize
'5. Поиск и замена.
Do While find.Execute = True
'1) Создание нового числа.
'a) Создаём случайное дробное число в заданном диапазоне.
NewNumber = (11 - 3) * Rnd + 3
'b) Округление числа до двух цифр после запятой.
NewNumber = Format(NewNumber, "0.00")
'c) Замена запятой на точку.
NewNumber = Replace(NewNumber, ",", ".")
'2) Замена найденного фрагмента на новое число.
find_rng.Text = NewNumber
'3) Смещение невидимого курсора вправо от найденного фрагмента, чтобы поиск
' начался после найденного фрагмента, а не в найденном фрагменте.
find_rng.Collapse Direction:=wdCollapseEnd
Loop
'6. Включение монитора.
Application.ScreenUpdating = True
'7. Сообщение.
MsgBox "Готово.", vbInformation
End Sub
В макросе, в пункте 5.1.a целые числа. А как быть если диапазон дробный 0.12-0.36?
'a) Создаём случайное дробное число в заданном диапазоне.
NewNumber = (0.36 - 0.12) * Rnd + 0.12
Спасибо большое, получилось идеально!