Поваренная книга Экселиста #1 - Преобразовываем ФИО

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

РЕЦЕПТ 1:  Преобразовываем ФИО в Ф / И / О, без использования VBA и прочей нехристи.
Для начала чуть теории - большинство, наверняка, сталкивались с такой задачей - есть ФИО в одном столбце, а нужно вытянуть только имя, ну или два столбца ИМЯ и ФАМИЛИЯ. Да или даже поменять местами, задачи разные - суть одна. Теперь давайте разбираться что имеем - имеем строку с N-количеством слов, разделенных одинаковым символом " " (ну или чуть сложнее с массивом, содержащим N-количество элементов, в роли разделителя " "). Тут важно понять сам смысл - все, что имеет закономерность, подлежит автоматизации. В нашем случае закономерность будет вот такая - СЛОВО" "СЛОВО" "СЛОВО, следовательно мы ИЛИ должны "выбрать" нужное нам СЛОВО из всей строки, или чуть схитрить) Но начнем с выбора.

ВАРИАНТ 1: Средствами экселя. Определяем нахождение разделителей по длине строки.
1. Создаем отдельную страницу (на всякий случай)
2. Вставляем данные - Допустим вид будет вот такой
ID | ФИО
1  | Иванов Иван Иванович (b2)

3. Выбираем ПЕРВОЕ СЛОВО, ячейка (c2)
=TRIM(LEFT(B2;FIND(" ";B2;1)))
Что сделали - нашли первое вхождение символа " " в строку, и резанули все, что после него.

4. Выбираем ВТОРОЕ СЛОВО, ячейка (d2)
=TRIM(MID(B2;FIND(" ";B2;FIND(" ";B2;1))+1;FIND(" ";B2;FIND(" ";B2;1)+1)-FIND(" ";B2;FIND(" ";B2;1))))
Что сделали - указали Экселю на "координаты" первого и второго разделителей, скорректировали координаты (порезали длину строки на лишний символ " ").

5. Выбираем ТРЕТЬЕ СЛОВО, ячейка (e2)
=TRIM(MID(B2;FIND(" ";B2;FIND(" ";B2;1)+1)+1;LEN(B2)))
Что сделали - то же самое, что и со ВТОРЫМ СЛОВОМ, только так как нам не нужно резать по второй координате - за нее взяли длину строки.

На выходе получили вот так:

Поваренная книга Экселиста #1 - Преобразовываем ФИО Microsoft Excel, Материальный дизайн, Таблица, Полезное, На заметку, Microsoft office, Длиннопост

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

СПОСОБ 2: Подмена разделителя
1. Выделяем столбец с ФИО.
2. Открываем текстовый редактор (дада, Блокнот / TextEdit), вставляем туда. ОБЯЗАТЕЛЬНО переведите его в формат Plain Text/ просто текст (формат сохранения .txt) (!)
3. Находим функцию "Найти и заменить".
3.1. В поле найти введите символ " " (то есть просто поиск по одиночному пробелу).
3.2. В поле заменить вставьте символ TAB. Для этого на первой строке нажмите TAB, выделите его, cmd+c,  cmd+v (или control, у кого какая религия)

Поваренная книга Экселиста #1 - Преобразовываем ФИО Microsoft Excel, Материальный дизайн, Таблица, Полезное, На заметку, Microsoft office, Длиннопост

3.3. Примените, скопируйте, вставьте в Эксель... И собственно так, если не знали - встречайте, TAB - символ переноса на следующую ячейку))

Поваренная книга Экселиста #1 - Преобразовываем ФИО Microsoft Excel, Материальный дизайн, Таблица, Полезное, На заметку, Microsoft office, Длиннопост

Надеюсь данные способы вам потребуются) И, главное, на забывайте - работает не только на ФИО)
Понравилось? Что-то интересно? Прошу в комменты)  Ну и там лайк/ подписка / кошелек / очки / мотоцикл)

MS, Libreoffice & Google docs

719 постов15K подписчика

Добавить пост

Правила сообщества

1. Не нарушать правила Пикабу

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.

По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях


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

Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.

Вы смотрите срез комментариев. Показать все
16
Автор поста оценил этот комментарий

Нет, не понравилось.


Во-первых, пробелы заменять на табы во внешних редакторах не нужно. В экселе есть такая кнопочка: "Текст по столбцам". Там можно выбрать один из стандартных разделителей (пробел, запятая, табулятор и пр.) или задать нестандартный, причём можно выбрать несколько сразу.


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


Кроме того, использование TRIM в ваших формулах не нужно (если в строке всё аккуратно и слова разделяются одним пробелом, в начале и конце пробелов нет, то вместо TRIM достаточно учитывать единичку, а в случае неаккуратного использования пробелов ваши формулы все равно работать не будут).


А еще у вас точки с запятой вместо запятых в формулах. Возможно, это связано с разной локалью в наших экселях, и у вас ошибки нет, точно не уверен.

раскрыть ветку (11)
Автор поста оценил этот комментарий

Единственное что я не понимаю, это почему эксель не поддерживает регулярные выражения в ячейках.

Только допиливанием костылей через VBA

раскрыть ветку (6)
Автор поста оценил этот комментарий

Поконкретнее с этого места... что имеете в виду, когда говорите что не поддерживает? Пример какой-нибудь?

раскрыть ветку (5)
Автор поста оценил этот комментарий

В прямом.

Я не могу искать и вырывать нужные куски текста при помощи регулярных выражений.

Только при помощи всяких ограниченных функций поиска текста, левсимв, правсимв и вырвиглазных формул с их участием.

раскрыть ветку (4)
Автор поста оценил этот комментарий

А вот кстати нет, ввели. В тестовой версии у кого-то в обзоре видел. НО до винды год, до Мака - только когда ВВП выборы проиграет))

раскрыть ветку (3)
Автор поста оценил этот комментарий

Ну. Как я и сказал, они УЖЕ есть, потому что ВБА их отлично поддерживает.

Я не понимаю почему они выкинули столь полезный функционал, который ещё с 2007 года.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Без VBA, в том то и фокус

раскрыть ветку (1)
Автор поста оценил этот комментарий

Будем надеяться.

ещё комментарии
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку