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

Для начала скажу, что это мой первый в жизни on-line тренинг. До начала тренинга автоматизировал таблицы с помощью формул, и то 3-4 месяца (а до этого EXCEL для меня был набором клеточек).

Случайно вышел на сайт excel-eto-prosto и решил начать пробовать макросы, т.к. с помощью формул стало сложно отслеживать изменяющуюся информацию в моих таблицах (а таблички у меня от 5 листов, по 7-12 тысяч строк в каждой, и все это взаимосвязано, и живет бурной жизнью) :-)

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

Единственный совет для начинающих: Прежде чем начинать заниматься On-Line, ОБЯЗАТЕЛЬНО просмотреть ВСЕ бесплатные видео уроки. Я не успел этого сделать, и, побежав вперед паровоза, сильно об этом пожалел.

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

Но, из того, что успел, многое узнал, уже использую и продолжаю изучать.

Дмитрий, большое, ОГРОМНОЕ СПАСИБО!

За доступное объяснение материала, подсказки и ответы на глупые вопросы.

Алексей о практическом тренинге
Ваши материалы являются настольным материалом для меня

Благодарю Вас за проведенный вебинар!

Очень приятно и полезно было провести вечер на таком мероприятии.

Хотя и давно пользуюсь Вашими материалами, но последние материалы стали более удобны в использовании, т.к. разбиты на более мелкие темы и поэтому проще стало найти необходимый материал. Это обстоятельство тем более актуально в связи с тем, что Ваши материалы являются настольным материалом для меня, т.к. теперь без программирования я не представляю дальнейшую свою работу. Хоть я и имею многие Ваши материалы, и в новых материалах идет повторение, но, в связи с новыми примерами, всегда находятся новые «нюансики», которые оказываются очень полезными.

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

Огромное спасибо Вам за ваше такое добросовестное и талантливое отношение к этой работе! Я думаю, что многие слушатели согласны со мной.

Юрий Юркин о мастер-классе
Тренинг оправдал мои ожидания на 100%

Добрый вечер, Дмитрий!

Успешно пройден «Тренинг по автоматизации в Excel-2016 - пятый поток (лето 2017)».

Хочу дать обратную связь и высказать своё почтение, уважение гуру и владельцу этого замечательного ресурса Дмитрию Быстрову.

Дмитрий, респект вам и уважуха!!! ;-)

Тренинг оправдал мои ожидания на 100%. Я получил равно столько, насколько рассчитывал. А рассчитывал я получить базовые знания по данной теме и практический опыт. С этим тренинг справился и теперь с этими знаниями уже можно создавать умные книги/документы и двигаться далее, покоряя всё новые высоты многогранного Excel’я .

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

Если же сказать по существу и, не вдаваясь в эмоции, то всё сделано очень грамотно и лаконично. Чувствуется системный подход и живой ум автора. Материал подаётся лаконично, порционно и в удобно перевариваемом виде. Присутствуют справочники и дополнительный материал с перекрёстными ссылками на темы и отсылки на другие темы и источники. Мне понравилось.

Дмитрий, вы молодец!!!

Дай бог вам здоровья и успехов в ваших делах! Желаю вашему проекту всего самого наилучшего!

Если говорить про пожелания, то …

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

Идея: добавить к видео текстовый файл в котором как в плей листе будет время и содержание.

Например:

«Занятие 3 - Часть 3. Работа с цветами.mp4» - Сам видео урок

«Занятие 3 - Часть 3. Работа с цветами.txt» - Содержание

[00:48] – Заливка ячейки Interior .Color

[01:05] – Константы цвета : vbBlack, vbWhite, vbRed,...

[06:00] – функция RGB (0,0,0)

И вот что ещё: В конце тренинга подводя итоги в задании №9 было бы хорошо вложить все крайние варианты раздаточного материала, например, последний вариант справочника. Может быть что, то ещё, но сейчас на ум пришло только это.

Спасибо! И до новых встреч!

Алексей Сырчин о практическом тренинге
Всем, кому лень делать рутинную работу, советую прослушать данный мастер-класс!

Хочу оставить свой отзыв о вчерашнем мастер-классе от Дмитрия Быстрова, который состоялся 30 июля 2013г.

Для меня это был первый вебинар в жизни. И, думаю, как и всё первое в жизни он запомнится мне навсегда!

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

В общем всем, кому лень делать рутинную работу, советую прослушать данный мастер-класс! Лично для меня эта тема была ОЧЕНЬ актуальна.

P.S. всем, кто осмелиться прослушать данный мастер-класс рекомендую просмотреть бесплатные уроки Дмитрия, очень поможет.

P.S.S. Дмитрий Вам спасибо за науку и терпение, которое Вы вчера проявили по отношению к нам! )))))

Дмитрий Чибрин о мастер-классе
Попробовал применить для своей работы - честно говоря, получилось не сразу))

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

Работаю в отделе снабжения производственной компании,каждый день приходится заполнять достаточно большие таблицы - какие материалы поступили,сколько,на какой склад, от кого и т.д. От поставщиков документы приходят в формате excel. Посмотрел презентацию вашего вебинара - понял,что как раз в моей работе можно использовать технологию автоматизации заполнения данных. Приобрел вебинар в записи,просмотрел - вроде в целом понятно. Попробовал применить для своей работы - честно говоря,получилось не сразу)) Но пару дней поковырялся, пересмотрел запись вебинара еще раз - вроде смог настроить,заработало ) Конечно еще есть что неплохо бы довести до ума,но даже и то что уже сделано экономит мне минут 40 в день - очень доволен) Главное - теперь видны перспективы, уже прикидываю,что еще можно было бы автоматизировать у себя,знаний конечно пока не хватает для этого, но интерес появился и вера в свои силы окрепла после первой заработавшей програмки :) Большое спасибо за качественный материал,планирую изучать ваши материалы дальше)

Виктор Костин о мастер-классе

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

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

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

Здравствуйте. Подскажите, а можно ли сделать Q-код в таблице, но чтоб там было видно наименование упаковки, вес, дата прихода, наименование контрагента и тд. И при каждом изменении данных, автоматически делался Q-код?

Людмила
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

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

▲ Наверх