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

Очень здорово, что есть бесплатные уроки в формате: "Посмотрел-применил". Тренинг идет, а в голове: "Завтра же на работе сделаю вот этот отчет, как ... задачу". И вперед.

Справочник от Дмитрия отличная подсказка тем, кто знает что хочет получить, но не знает, что писать.

Я после полученных знаний на тренингах Дмитрия, вообще перестала бояться какой бы то ни было задачи от директора, так как теперь знаю, как ее обработать, как поскорее решить и где подсмотреть (если что )))!

Марина Данилушкина о практическом тренинге
Не вижу пределов возможностей применения автоматизации в Excel

Добрый день, Дмитрий!

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

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

Есть планы по изучения программирования в автокаде и связи с расчетами в Excel (существующий перенос данных из одной программы в другую не лишен недостатков).

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

Данный тренинг считаю нужным и полезным и, кстати, недорогим (~100 евро курсы "Практик" и "Специалист" ).

Еще раз хочу Вас поблагодарить за обучение по применению автоматизации в Excel.

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

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

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

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

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

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

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

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

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

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

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

Диляра Хакимуллина о практическом тренинге
На тренинг пошла с нулевыми знаниями по программированию...

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

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

Еще раз спасибо большое, Дмитрий, за тренинг. Если в будущем понадобиться расширение знаний, то приду именно к Вам!

Анна Шайхутдинова о практическом тренинге
Файл весит в 5,5 раз меньше, открывается легко (не пересчитываются формулы), работает всё быстро!

Ещё раз спасибо! Прошло немного времени после занятий и вот уже есть первые результаты: используя полученные знания на тренинге, работаю над своим большим файлом. В старом виде писала огромное множество формул для расчётов и всяческих проверок, плюс руками надо было протягивать формулы и глазами смотреть в ячейки проверок (в общем пользователь этого файла не смогла аккуратно "вести" его). Именно из-за этого файла в совокупности с возможностями пользовательницы я и решилась на изучение макросов (надоело за неё работать по понедельникам). Теперь все расчёты и проверки я написала в VBA, благодаря Вам. В результате файл весит в 5,5 раз меньше, открывается легко (не пересчитываются формулы), работает всё быстро! Я просто в восторге!!! Осталось немного доработать и отдать в пользование человеку, который с экселем не очень дружит, но теперь и не надо. Думаю, она тоже будет довольна.

А потом я и своих тяжеловесов "причешу" потихоньку.

Всем, кто только принимает решение о прохождении этого тренинга - конечно же ДА, пройти обязательно!!!

Спасибо ещё раз, Дмитрий!

Татьяна Богославская о практическом тренинге

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

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

В качестве примера возьмем разделение ФИО на отдельные фамилию, имя и отчество. С помощью средств 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 политикой конфиденциальности
Ваши данные строго конфиденциальны, они нигде не публикуются и используются исключительно для информирования вас о новых материалах на сайте, мероприятиях и/или иных услугах данного проекта.
В любой момент времени вы можете отказаться от получения сообщений.
Последние комментарии
Людмила
17.04.2022 в 14:33:48

Добрый день, Дмитрий. Я случайно увидела ваши видео в ютубе. Посмотрела и мне стало интересно изучить макросы. Перешла по ссылке и просмотрела часть бесплатных видео и мне очень понравилась ваша манера преподавать просто без лишних слов. Скажите, пожалуйста, а как сделать выпадающий...

Станислав
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

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

▲ Наверх