Разделение ФИО | Автоматизация в Excel - бесплатные уроки
Отзывы о мастер-классах и тренингах
...Это было для меня откровением

С MS Excel приходилось сталкиваться только при заполнении табличных форм с использованием формулы = R1C1, а о макросах приходилось только слышать.

То, что в MS Excel существует код VBA, было для меня откровением.

За счет доступного всем изложения тем занятий в ясной и понятной форме на видео уроках и вебинарах, - получил массу полезной гигаинформации, с помощью которой планируется реализация наметившихся идей по автоматизации в MS Excel в некоторых аспектах своей деятельности .

Дмитрий, большое спасибо за отлично преподнесенный материал!

Виктор Демин о практическом тренинге
...Их визг радости до сих пор у меня стоит в ушах

Я работаю в гос.учреждении экономистом. В глобальном масштабе информация у нас обрабатывается типовыми проектами на мощной технике, а нам сбрасывается полуфабрикат в виде таблиц и текстовых файлов. Небольшие задачи удалось решить с помощью макросов, которые осваивала на бесплатных уроках. Но есть такие, как например одна задача, с которой девчонки возятся 2 дня и при этом друг друга контролируют. Эту работу довелось и мне выполнить. Пришла в ужас: разве можно в наше время и такая страшная рутина, причем за ошибки достается очень серьезно, потому что результат направляется по краю. Поняла, что с помощью макросов ее не решить и вот, удачно попала на Ваши, Дмитрий, курсы. Осенью мне предстоит идти на пенсию и я решила сделать девчонкам подарок. Но когда я позвала их посмотреть на результат написанной программы, их визг радости до сих пор у меня стоит в ушах. Ведь о такой благодарности даже и не мечтала! До осени хочу еще несколько задач запрограммировать. Как же я могу быть не благодарна Вам за хорошие курсы, которые построены грамотно, умно и лаконично. Может и им захочется поучиться. СПАСИБО!!!

Людмила Овсянникова о практическом тренинге
Не всё так сложно на самом деле

Большое спасибо, во первых приятно себя ощутить студентом снова. Во вторых за интересный, а главное понятный язык изложения. В третьих не всё так сложно на самом деле, но если бы не Вы, Дмитрий, моё мнение было обратным. Всё самое интересное еще впереди. До новых встреч.

Артем Проскурин о практическом тренинге
Горизонты упрощения жизни стали куда как шире

Мне тренинг оказался не просто нужен и актуален, но еще и очень ко времени: в ожидании ребенка занимаюсь приведением рабочих дел в идеальный порядок и упрощением жизни всему отделу) Работа у нас удаленная, график прыгающий по времени, а потому макросы контроля и "наведения красоты на документы" - очень нужная и важная вещь, т.к. в результате больше внимания остается на то, что нельзя программно прописать.

Совершенно не делала домашние задания, т.к. процесс обучения у меня не разделен с процессом работы, и когда на примере я вижу, что могу с помощью аналогичных техник оптимизировать собственные рабочие задачи - то, естественно, занимаюсь сразу этим)

От тренинга в совершенном восторге, так как горизонты упрощения жизни себе и людям стали куда как шире.

Кроме того, я с трудом обучаюсь "по книгам", а вот "на примере" - легко схватываю.

Спасибо огромное, Дмитрий.

Ольга Калашникова о практическом тренинге
Есть желание и дальше двигаться вперед

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

Формат тренинга же стал именно тем стимулом, который повысил интенсивность обучения многократно. Если бы в начале тренинга я увидела те задания, которые мы будет способны выполнять в финальной его части, то, пожалуй, и предположить бы не могла, что это вскоре станет реальностью. Тренинг для меня стал значительным шагом (и даже серией шагов) вперед.

Все это стало возможно благодаря профессиональному подходу к проведению обучения со стороны Дмитрия Быстрова. Это проявлялось в оперативной поддержке участников тренинга на форуме, в обеспечении всеми необходимыми информационными материалами, которые участники могут использовать и в последующем. И, что особенно ценно, это подход к построению изложения материала: информация хорошо структурирована, все продуманно, выверенно.

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

Такой системный подход и позволил нарастающими темпами, шаг за шагом, формировать базу новых знаний. И не просто знаний, но и навыков - ведь все пройденное закреплялось в процессе решения домашних заданий.

И домашние задания становились одновременно и проверкой, и средством поиска новых подходов. Порой это требовало больших усилий, но при этом все, что было сделано самостоятельно, запоминается гораздо прочнее, чем то, что было просто услышано или прочитано.

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

Также перед началом тренинга я посмотрела 15 видеоуроков, которые находятся в открытом доступе на сайте. И сейчас понимаю,что если бы не ознакомилась с ними, то обучение протекало бы ощутимо сложнее. Можно сказать, что после упомянутых видеоуроков тренинг становится логическим продолжением.

Большая благодарность Дмитрию за то, что стал нашим проводником в мире VBA и Excel, показал пути, по которым можно идти. Самое главное, что после тренинга есть желание и дальше двигаться вперед, и появляются идеи для воплощения на практике. То, что прежде казалось непонятным и замысловатым, постепенно проясняется и обретает знакомые очертания.

Дмитрий, БОЛЬШОЕ СПАСИБО за тренинг, за проведенную работу! Дальнейших успехов проекту!

Диляра Хакимуллина о практическом тренинге

Разделение ФИО

Рассмотрим один из случаев широко распространенной задачи разделения строки на определенные части.

В качестве примера возьмем разделение ФИО на отдельные фамилию, имя и отчество. С помощью средств VBA эта задача решается за несколько минут.


Для просмотра видео необходимо
зарегистрироваться на сайте
Если вы уже зарегистрированы на сайте -
обновите страницу по этой ссылке или кнопкой F5

Комментарии

#2421   Виктор    29.09.2014 в 15:50:08

Огромное спасибо!!!

#2422   Виталий    29.09.2014 в 16:28:25

Критерий-"пробелы". Но "сильный" ли это критерий? Вряд ли..

#2423   Дмитрий Быстров    29.09.2014 в 16:34:19

Стопроцентно универсального решения не существует: все зависит от ситуации. В большинстве случаев показанного в примере решения будет достаточно, но в каждом конкретном случае, разумеется, надо отталкиваться от структуры тех данных, с которыми программа будет работать.

#2424   Гульнара    29.09.2014 в 16:40:49

Спасибо большое!

#2425   Игорь    29.09.2014 в 17:54:54

Спасибо!! Как всегда все четко и понятно!!!

#2426   Сергей    29.09.2014 в 17:58:07

Спасибо. Мне понравилось. Как это распространить на весь столбец, где будут другие ФИО?

#2428   Дмитрий Быстров    29.09.2014 в 18:54:09

В тренинге буду показывать

#2427   Тихон    29.09.2014 в 18:43:09

Класс!

#2429   АНДРЕЙ    29.09.2014 в 18:56:46

Дмитрий здравствуйте.

Урок интересный, спасибо. Есть вариант решения этой же задачки с помощью штатных Экселевских формул, возможно кому-то может пригодиться. Как и в случае с вашим примером на vba, эта формула позволяет вытянуть любое по счёту слово из текстовой строки. Символ разделителя может быть тоже любым, например "пробел", "запятая" и т.д.

Формула имеет вид :

=IF($C$1>LEN(B3)-LEN(SUBSTITUTE(B3;" ";""); RIGHT(B3;LEN(B3)-SEARCH("^^";SUBSTITUTE(B3;" ";"^^";LEN(B3)- LEN(SUBSTITUTE(B3;" ";"")))); IF($C$1=1;MID(B3;1;SEARCH("^^";SUBSTITUTE(B3;" ";"^^";1))-1);MID(B3;SEARCH("^^";SUBSTITUTE(B3;" ";"^^";$C$1-1))+1; SEARCH("^^";SUBSTITUTE(B3;" ";"^^";$C$1))- SEARCH("^^";SUBSTITUTE(B3;" ";"^^";$C$1-1))-1)))

Конечно с 1-го взгляда понять её работу сложновато, согласен Подозреваю, что по быстродействию этот вариант может быть быстрее пользовательской функции на vba, особенно при обработке большого кол-ва текстовых строк. К сожалению, не разобрался как в форуме приаттачить пример, выслал вам его на почту. Если сочтёте нужным, можно его опубликовть в обсуждаемой теме

С уважением,

Аганин Андрей

#2430   Михаил    29.09.2014 в 21:03:47

Интересно. Спасибо!

#2431   Тихон    29.09.2014 в 22:07:43

Все получилось идеально

#2432   Юрий    29.09.2014 в 22:48:48

Спасибо Дмитрий за новый урок!!! Познавательно Пригодится урок для решения задач...

#2433   АНАТОЛИЙ    29.09.2014 в 23:14:11

Как всегда,все просто и очень интересно.Спасибо!

#2434   Александр    30.09.2014 в 01:35:12

Формула конечно хорошо, но команду написал и забыл.))) Дмитрий вы как всегда на высоте.

#2435   Наталья    30.09.2014 в 22:47:57

Дмитрий,спасибо большое! Очень полезный урок. Обязательно попробую на практике.

#2436   Зоя Алихановна    30.09.2014 в 23:51:42

Рассекречен еще один фокус! Спасибо!

#2437   Сергей    01.10.2014 в 17:10:09

Спасибо Дмитрию за проведенный коучинг. Вся информация была максимально полезна и излагалась на понятном языке. Приятно обучаться у настоящего профи.

#2438   Андрей    02.10.2014 в 01:43:11

Если честно, впечатляет!!!!!

#2442   Алексндр Михайлович    06.10.2014 в 15:46:35

Благодарю Вас,Дмитрий. Данный Урок очень важен при отработке именно вырезки части текста...

#2443   Герман    07.10.2014 в 16:15:03

Интересно можно ли разделить по коду прописной буквы?

Есть ли такая возможность?

#2444   Дмитрий Быстров    07.10.2014 в 18:13:17

Добрый день, Герман.

Возможность есть, но решение будет несколько более сложным. Придется в цикле по очереди брать каждый символ строки и проверять его код: попадает ли он в диапазон кодов заглавных букв.

#2451   Nurlan Baimakhanov    09.10.2014 в 18:13:02

Очень много нового узнаю и вам за это спасибо

#2457   константин    10.10.2014 в 19:52:15

Очень доходчего. Спасибо

#2463   Александр    17.10.2014 в 11:12:40

Очень просто, интересно и доходчево изложено! Спасибо.

#2486   Наталья    31.10.2014 в 03:51:57

VBA это конечно здорово, но почему не воспользоваться стандартной кнопкой на панели Данные - Текст по столбцам (разделитель м.б. любой)

правда предварительно лучше справа пару столбиков добавить для ИО.

За уроки ОГРОМНОЕ спасибо...

#2487   Дмитрий Быстров    31.10.2014 в 15:05:45

Доброе утро, Наталья.

Хороший вопрос.

Во-первых, во многих случаях использовать VBA удобнее (не надо вставлять столбцы): например, ячеек для разбиение у Вас несколько и находятся они не в одном столбце.

Во-вторых, с помощью VBA можно разбивать строки не по какому-то одному разделителю, а по нескольким (искать в строке, скажем, не только пробел, но и запятую или точку с запятой - в зависимости от того, что встретится раньше) - код, конечно, станет пообъемнее, но это тоже вполне возможно.

Хотя стандартный механизм "текст по столбцам" тоже полезен и в некоторых случаях проще использовать его. Так что разбиение на VBA - не панацея для всех случаев, а просто еще один инструмент в ваш арсенал, а там уже по ситуации выберете, что будет удобнее в конкретной задаче.

#2492   Руслана    06.11.2014 в 23:19:42

Посмотрела примеры автоматизации в Excel, скачанные с главной страницы. У меня возник вопрос по последнему примеру "Пример 8. Формирование пачки документов по шаблону.xls". Можно ли воспользоваться функцией Слияние документов Word для получения того же результата.

Большое спасибо за видео уроки. Очень помогли. Пополнила свои знания VB.

#2709   Владимир    03.03.2015 в 20:48:02

Когда мне надо из ячейки В1 извлечь фамилию, использую формулу:

=MID(B1;1;Find(" ";B1)) разделитель тоже пробел

для имени получается длиннее:

=MID(B1; Find(" ";B1)+1;LEN(B1)-FIND(" ";B1))

Отчество у нас в Латвии не используется, но и для негоможно создать формулу. Формулы можно раскопировать на любой диапазон таблицы, исодные ячейки могут быть на любом листе. Но ваш пример хорош как принцип создания программы, с постепенным усложнением параметров. Примерно так же создаются и сложные формулы. Спасибо за уроки!

#2820   Вентиль    12.04.2015 в 18:49:53

Спасибо большое! Очень доходчиво, написал свой первый макрос добавил по своему пониманию автоматическое распознавание отчества Иногда мы ставим фамилию в начале иногда в конце. Макрос всегда ставит фамилию там где надо.

Sub РасстановкаФИО_Click()

фио = Cells(1, 1)

пробел1 = InStr(фио, " ")

пробел2 = InStr(пробел1 + 1, фио, " ")

фио1 = Left(фио, пробел1 - 1)

фио2 = Mid(фио, пробел1 + 1, пробел2 - пробел1 - 1)

фио3 = Mid(фио, пробел2 + 1)

If (Right(фио1, 2) = "ич") Or (Right(фио1, 3) = "вна") Or (Right(фио1, 3) = "чна") _

Then фамилия = фио1: имя = фио2: отчество = фио3

If (Right(фио2, 2) = "ич") Or (Right(фио2, 3) = "вна") Or (Right(фио2, 3) = "чна") _

Then отчество = фио2: имя = фио1: фамилия = фио3 _

Else: фамилия = фио1: имя = фио2: отчество = фио3

Cells(1, 3) = фамилия

Cells(2, 3) = имя

Cells(3, 3) = отчество

End Sub

ПС ну я исходил из того что никто не станет писать Отчество первым, это уж совсем не по русски.

Не судите строго о нужности или ненужности, это мой первый макрос.

#2866   Владимир    19.06.2015 в 18:47:44

Спасибо господину Вентилю. А я вот немного потренировался и посовершенствовал с моей точки зрения созданное Вентилем. Я просто постарался сделать, чтобы в любом месте можно было бы делать, ну и со списком циклом можно было бы работать. На первое ФИО в списке нужно встать, ну и весь список будет преобразован до первой пустой ячейки. Вот мой результат, профессионалы могу критически оценить, буду рад

У меня вроде бы отлично работает до ста позиций очень быстро разносит

Sub РазбивкаФИО_Click()

Do

If Not Selection.Value > " " Then Exit Do

ActiveCell().Select

фио = Cells(1, 1)

пробел1 = InStr(фио, " ")

пробел2 = InStr(пробел1 + 1, фио, " ")

фио1 = Left(фио, пробел1 - 1)

фио2 = Mid(фио, пробел1 + 1, пробел2 - пробел1 - 1)

фио3 = Mid(фио, пробел2 + 1)

If (Right(фио1, 2) = "ич") Or (Right(фио1, 3) = "вна") Or (Right(фио1, 3) = "чна") _

Then фамилия = фио1: имя = фио2: отчество = фио3

If (Right(фио2, 2) = "ич") Or (Right(фио2, 3) = "вна") Or (Right(фио2, 3) = "чна") _

Then отчество = фио2: имя = фио1: фамилия = фио3 _

Else: фамилия = фио1: имя = фио2: отчество = фио3

ActiveCell.Offset(0, 1) = фамилия

ActiveCell.Offset(0, 2) = имя

ActiveCell.Offset(0, 3) = отчество

ActiveCell.Offset(1, 0).Select

Loop

End Sub

#2867   Владимир    19.06.2015 в 18:50:47

исправил тут кое-что в тексте указанного выше макроса

Sub РазбивкаФИО_Click()

Do

If Not Selection.Value > " " Then Exit Do

ActiveCell().Select

фио = ActiveCell()

пробел1 = InStr(фио, " "

пробел2 = InStr(пробел1 + 1, фио, " "

фио1 = Left(фио, пробел1 - 1)

фио2 = Mid(фио, пробел1 + 1, пробел2 - пробел1 - 1)

фио3 = Mid(фио, пробел2 + 1)

If (Right(фио1, 2) = "ич" Or (Right(фио1, 3) = "вна" Or (Right(фио1, 3) = "чна" _

Then фамилия = фио1: имя = фио2: отчество = фио3

If (Right(фио2, 2) = "ич" Or (Right(фио2, 3) = "вна" Or (Right(фио2, 3) = "чна" _

Then отчество = фио2: имя = фио1: фамилия = фио3 _

Else: фамилия = фио1: имя = фио2: отчество = фио3

ActiveCell.Offset(0, 1) = фамилия

ActiveCell.Offset(0, 2) = имя

ActiveCell.Offset(0, 3) = отчество

ActiveCell.Offset(1, 0).Select

Loop

End Sub

#3062   Дмитрий    03.03.2016 в 19:55:53

Очень здорово! Спасибо большое! По ходу урока добавил для выполнения макроса кнопку, сделал, чтобы у столбцов, в которые выводятся значения автоматически подбиралась ширина, и сделал так, чтобы ФИО брались из любой активной строки. В общем, стараюсь комбинировать полученные знания, очень интересно! Спасибо ещё раз!

Оставлять комментарии и просматривать видеоуроки
могут только зарегистрированные пользователи.
(если ранее Вы уже регистрировались, введите повторно
Ваше имя и тот e-mail, который был указан при регистрации)
Как к Вам обращаться:
Ваш адрес e-mail:
Нажимая на кнопку "Зарегистрироваться", я даю согласие на обработку персональных данных и соглашаюсь c политикой конфиденциальности
Ваши данные строго конфиденциальны, они нигде не публикуются и используются исключительно для информирования вас о новых материалах на сайте, мероприятиях и/или иных услугах данного проекта.
В любой момент времени вы можете отказаться от получения сообщений.
Последние комментарии
Станислав
16.08.2020 в 23:08:36

Здравствуйте В видео "Автоматизация заполнения бланка документа (платежного поручения)" говориться, что можно скачать файлы с макросами, о которых идет речь. Не могу найти. Подскажите, пожалуйста,где скачать Файл?

Юрий
21.07.2020 в 13:10:25

Благодарю Вас хотя у меня оффис 97 все полчается

Евгения
26.06.2020 в 01:10:51

здравствуйте, Дмитрий... подскажите пожалуйста такой момент, для того, чтобы сделать макрос с фамилиями, я сделала перечень с фамилиями и суммами.. так вот у меня слово фамилия при сортировке улетает в самый низ))) то есть оно тоже сортируется... что не так в моей таблице?

juna
08.05.2020 в 15:02:44

Спасибо большое.Очень полезная информация

Людмила
03.05.2020 в 19:11:12

Замечательные уроки, большое спасибо автору. Все очень доходчиво, без лишних заморочек.

Алексей
25.04.2020 в 14:24:56

Доступно и понятно!Круто!!!

Дмитрий Быстров
15.04.2020 в 11:31:15

Добрый день.

Можно, но этот код будет посложнее, т.к. придется из Excel взаимодействовать с другим приложением - Outlook. А для этого нужно уметь обращаться не только с объектами Excel, но и с объектами Outlook (которые, конечно, сильно отличаются).

Подобные вопросы я рассматривал на специальном тренинге "Взаимодействие Excel с другими приложениями", подробнее о нем и его содержании можно узнать по этой ссылке.

Мария
15.04.2020 в 07:30:51

Дмитрий, доброе утро! А можно добавить еще макрос, чтоб после завершения теста еще и отправлял автоматически через аутлук адресату ответ с тестированием?

людмила
12.04.2020 в 22:31:20

Спасибо, Все, разобралась, внимательно смотреть нужно

Дмитрий Быстров
11.04.2020 в 21:43:25

Добрый вечер, Людмила. Не знаю, что неправильно сделали - я же не вижу Ваш файл ) "Но он не отображается на листе" - кто он? Макрос? Если пришлете Ваш файл на почту mail@excel-eto-prosto.ru - тогда, наверно, мне станет понятнее, что там у Вас не так.

▲ Наверх