Страницы: 1
RSS
Сгенерировать случайное имя-отчество из данных соседнего листа
 
Добрый вечер всем !

Как макросом сгенерировать случайное Имя Отчество в ячейку "E3" листа "ИО"
Имя берется из листа "Данные" из столбца "B2:B"
Фамилия берется из листа "Данные" из столбца "С2:С"
При этом не нужно генерировать Имя-Отчество из одинаковых имен и отчеств
Например: не нужно Александр Александрович, Андрей Андреевич и тд
(когда имя-отчество в соседних ячейках рядом на листе "Данные")

Пример файла во вложении
 
Игорь А, здравствуйте
Цитата
Игорь А: сгенерировать случайное
VBA.Rnd
Цитата
Игорь А: не нужно генерировать Имя-Отчество из одинаковых имен и отчеств
словари
Изменено: Jack Famous - 30.11.2022 20:40:10
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
открывайте файл
жмите F9
наслаждайтесь
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Я конечно ничего не понял как вы по F9 сделали - спасибо конечно - но нужно было макросом
Посмотрел примеры в интернете по случайной выборке из массива - получилась такая конструкция
Но как здесь поставить условие - не нужно генерировать Имя-Отчество из одинаковых имен и отчеств (когда имя-отчество в соседних ячейках рядом на листе "Данные")
Код
Sub ГенераторИО()
Dim Name As Variant, Fam As Variant
Dim Name1 As String, Fam1 As String
Randomize
Name = Application.Transpose(Sheets("Данные").Range("B2:B56"))
Fam = Application.Transpose(Sheets("Данные").Range("C2:C56"))
Name1 = Name(Int(Rnd() * 55))
Fam1 = Fam(Int(Rnd() * 55))
On Error Resume Next
Range("C3").Value = Name1 & " " & Fam1
'MsgBox "Генерация ИО прошла успешно !"
End Sub
Изменено: Игорь А - 30.11.2022 20:59:46
 
извините, а какая разница макрос в С3 напишет случайные имя отчество или формула?
ну, разве что: использование макроса носит какой-то сакральный смысл - тут не поспоришь...
я вообще стараюсь не спорить с людьми, находящими сакральный смысл в случайных вещах
и F9 это не я сделал, это программисты Microsoft накуролесили)
Изменено: Ігор Гончаренко - 30.11.2022 21:11:47
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
написал:
использование макроса носит какой-то сакральный смысл - тут не поспоришь...
Да никакого сакрального смысла - просто итоговая ячейка с результатами будет в TextBox на форме - а здесь упрощенный пример
Поэтому и уточнял что макросом надо
 
считайте F9 - это кнопка "сгенерировать имя отчество"
что мешает взять имя отчество с ячейки С3 в техбокс, в файл, на ваш сайт, на МКС в конце концов, если у вас есть доступ к файлам МКС (международная космическая станция)
Изменено: Ігор Гончаренко - 30.11.2022 21:27:49
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
так получилось
Код
Sub ГенераторИО()
Application.ScreenUpdating = False
Dim Name As String, Fam As String
Dim NameRow As Long, FamRow As Long

'отсюда код https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=94211&MID=s
NameRow = Sheets("Данные").Cells(CInt(2 + 53 * Rnd), 2).Row
FamRow = Sheets("Данные").Cells(CInt(2 + 53 * Rnd), 3).Row

If NameRow = FamRow Then
MsgBox "Совпадение строк ! Не нужен Петр Петрович Алексей Алексеевич !"
Exit Sub
End If

Name = Sheets("Данные").Cells(NameRow, 2).Value
Fam = Sheets("Данные").Cells(FamRow, 3).Value
  
Range("C3").Value = Name & " " & Fam
 
Application.ScreenUpdating = True
End Sub
 
вам без макроса никак?
см. вложение
забудьте про F9, выполняйте макрос:
Код
Sub ГенераторИО()
  Worksheets("ИО").Calculate
End Sub

найдите 10 отличий в результатах работы этого макроса и вашего, сравните размер того, что написано у вас и мой макрос из 3-х строк которого одна - заголовок, а последняя - замыкающая процедуру служебная запись
Изменено: Ігор Гончаренко - 01.12.2022 05:56:38
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх