Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Розделение имени при помощи VBA
 
Добрый день. Во вложении файл с макросом, который разделяет фамилия имя и отчество по отдельным ячейкам.Но есть удалить отчество например, выводит ошибку. Как дописать макрос, чтобы ошибки небыло а просто заполнялось 2 ячейки (без отчества, если его нет)? Спасибо.  
Изменено: AlexBosenko - 23 Авг 2017 12:06:22
 
Цитата
AlexBosenko написал:
.Но есть удалить отчество например
В Вашем примере нет ФИО без отчества. Покажите Как есть - Как надо
И побольше возможных вариантов (без фамилии, или еще без чего)
Изменено: Sanja - 23 Авг 2017 12:09:21
Согласие есть продукт при полном непротивлении сторон.
 
Вот список возможных вариантов. И еще, можно ли сделать чтобы макрос смотрел не только на Cells (2,2)б а брал полностью столбец и разделял вправо все что есть в столбце? Спасибо.
 
Цитата
AlexBosenko написал: а просто заполнялось 2 ячейки
2 ячейки можно заполнять, но подряд. Как макросу объяснить что пропущено именно отчество? Или фамилия?
Согласие есть продукт при полном непротивлении сторон.
 
Вот через это. То есть показать, что этот код это имя и прописать через Если, чтобы вставляло в колонку "D".
Код
Name = Mid(Full_name, First_blank + 1, Second_blank - First_blank - 1)
Изменено: AlexBosenko - 23 Авг 2017 12:21:55
 
держите такой вариант
 
Вообще, отлично. Спасибо большое. А можете разяснить, что значить данный код. Я хочу понять логику для будущего. Спасибо.
Код
Sub Dividing_names()

    i = 1
    Do
        i = i + 1
        If Range("B" & i) = "" Then Exit Do
        myFIO = Split(Range("B" & i), " ")
        Range("C" & i).Resize(, UBound(myFIO) + 1) = myFIO
    Loop

End Sub
 
Код
Sub Dividing_names()
 
    i = 1 'счетчик
    Do
        i = i + 1 
        If Range("B" & i) = "" Then Exit Do ' если в столбце B пусто, то выходим из цикла
        myFIO = Split(Range("B" & i), " ") '  с помощью оператора Split разделяем ФИО по пробелам и получаем массив myFIO
        Range("C" & i).Resize(, UBound(myFIO) + 1) = myFIO ' Переносим массив myFIO в ячейки
    Loop
 
End Sub
Изменено: Watcher_1 - 23 Авг 2017 12:37:48
Страницы: 1
Читают тему (гостей: 1)
Наверх