Доброго времени суток всем гуру в мире макросов!
Помогите пожалуйста с реализацией макроса. Версия эксель 16.96
Задача макроса:
В заданном диапазоне ячеек записать уникальный (не повторяющийся) 14-значный номер.
Номер состоит из префикса и рандомного числа.
Префикс задается заранее в макросе, его длина 6 символов, это могут быть буквы, цифр или дефис. Если префикс короче 6 символов, то не заполненные в правой части символы, заменяются нулями.
Рандомное число, длиной 8 символом. Диапазон чисел задается. Если число менее 8 символов, то слева ставятся нули.
Пример номера:
PREF24ххххххxx, где PREF24 – префикс заданный в макросе, хxxxxxxx – число случайное, не повторяющееся ранее число.
SZ0000ххххххxx, где SZ – префикс заданный в макросе, 0000 – нули подставленные автоматом, из-за длины префикса, хxxxxxxx – число случайное, не повторяющееся ранее число.
EX-ВК0ххххххxx, где EX-ВК – префикс заданный в макросе, 0 – нули подставленные автоматом, из-за длины префикса, хxxxxxxx – число случайное, не повторяющееся ранее число.
На форуме встречал похожие задачи, но не получается довести до конца, не могу добавить префикс в начале числа и проверка на уникальность числа
Решение генерации от Dophin
Sub pp()
[a1:a555].FormulaR1C1 = "=RANDBETWEEN(1,99999999)"
[a1:a555].Value = [a1:a555].Value
End Sub
Решение от KuklP
Dim stb
Dim c As Range
Application.ScreenUpdating = False
stb = Timer
For Each c In Range("C1:C555").Cells
c.Value = ABC + 25000000 + Int((99999999 * Rnd) - 999)
Next
stb = CInt((Timer - stb) * 100) / 100
MsgBox ("Готово. Время работы " & stb & " сек."), vbInformation
Application.ScreenUpdating = True
End Sub
Помогите пожалуйста допилить макрос.