как в excel определить пол по фио

Определение пола по имени в Excel

Описание функции

Функция =ПОЛ(ФИО) возвращает значение М если ФИО содержит мужское имя, или значение Ж, если имя женское. Функция имеет только 1 аргумент:

Пример 1

Начнем с простого примера, когда для каждого человека из списка необходимо определить его пол.

Пример 2

Использование функции ПОЛ для автоматизации договоров. Допустим необходимо автоматизировать обращение к клиенту и в зависимости от пола писать Уважаемый или Уважаемая. Тут нам и поможет наша функция.

Помимо функции ПОЛ тут для удобства использовались функции ИМЯ и ОТЧЕСТВО. Они также входят в состав надстройки.

Принцип работы функции

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

Так как для определения пола используется наш сервер, то для корректной работы функции ПОЛ необходимо наличие интернета.

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

Источник

Определение пола по имени

Классическая задача, с которой периодически сталкивается почти любой пользователь Microsoft Excel: нужно определить пол для каждого человека в списке. Давайте рассмотрим несколько решений для такой задачи.

Вариант 1. Полные ФИО, только «наши»

Функция ПРАВСИМВ (RIGHT) извлекает из ФИО один символ справа (последнюю букву отчества), а функция ЕСЛИ (IF) проверяет извлеченный символ и выводит «ж» или «м», в зависимости от результата проверки.

Вариант 2. Полные ФИО, есть «экспаты»

Если в списке есть имена не только русского типа (назовем их «экспаты»), то к приведенной ранее формуле можно добавить еще одну проверку, чтобы отлавливать их тоже:

Вариант 3. Неполные или переставленные ФИО, только «наши»

Если в нашем списке отчества есть не у всех (или их нет совсем) или ФИО идет в другом порядке (ИФО, ИФ, ФИ), то придется использовать принципиально другой подход. Создадим таблицу-справочника со всеми женскими именами (я использовал для этого википедию):

Созданную таблицу я преобразовал в «умную» (выделить ее и нажать Ctrl+T), чтобы потом не думать про ее размеры и дополнять справочник новыми именами в любое время. На появившейся вкладке Конструктор (Design) умной таблице лучше дать отдельное имя (например жен), чтобы потом использовать его в формулах:

Нужная нам формула для определения пола будет выглядеть так:

Давайте разберем ее по шагам на примере первого человека:

Функция ПОИСК (SEARCH) ищет вхождения по очереди каждого женского имени из умной таблицы жен в строку «Храброва Алла Сергеевна» и выдает на выходе либо ошибку #ЗНАЧ (если не нашла), либо порядковый номер символа, начиная с которого имя входит в ФИО. На выходе мы получаем массив:

<#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!: 10 :#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:
#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:
#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:
#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:
#ЗНАЧ!: #ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!>

Число 10 на седьмой позиции в этом массиве фактически означает, что седьмое женское имя Алла из умной таблицы-справочника входит в первое ФИО Храброва Алла Сергеевна начиная с 10 символа.

Затем функция ЕСЛИОШИБКА (IFERROR) заменяет ошибки #ЗНАЧ! на нули. В результате получаем:

Функция СУММ (SUM) суммирует все числа в получившемся массиве и если получается число больше нуля, то функция ЕСЛИ (IF) выводит «ж», в противном случае «м».

Не забудьте после ввода формулы нажать сочетание клавиш Ctrl+Shift+Enter, т.к. ее нужно ввести как формулу массива.

Вариант 4. Неполные ФИО, есть «экспаты»

Если в списке могут встречаться экспаты или нестандартные имена, которых нет в справочнике, то предыдущая формула будет автоматом относить человека к мужчинам, что не есть хорошо. Поэтому для полной универсальности можно добавить справочник мужских имен и еще одну проверку, как мы уже делали в варианте-2:

Источник

Как определить пол по отчеству (ПРАВСИМВ)

Этот пример я решил разобрать, чтобы разобрать комбинацию из формул ЕСЛИ и ПРАВСИМВ.
Разберём тот случай, когда после применения не самой замудрённой формулы в Microsoft Excel, у обычного зрителя возникает ощущение «ВАУ».

Перед нами таблица с ФИО, и наша задача — определить с помощью формулы пол по отчеству.
По традиции можете посмотреть видео, пример для скачивания доступен выше.

Для начала немного теории…
Все мужские отчества заканчиваются на букву «-ч», женские — на «-на».
Нам остаётся просто воспользоваться логической функцией: если отчество заканчивается на букву «-ч», значит пол мужской.
В противном случае, пол — женский.

В ячейку C2 запишем формулу:

«=ЕСЛИ(ПРАВСИМВ(B2;1)=»ч»;»м»;»ж»)»

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

Согласитесь, красивое решение.
Просто, одной формулой, которая состоит из функций ЕСЛИ и ПРАВСИМВ, мы так красиво решили задачу.

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

Вам так же доступно видео, возможно кому-то будет так удобнее.

Больше полезных видеоуроков на нашем YouTube канале.
Если у Вас возникли вопросы или просто хотите поделиться мнением, напишите в комментариях к записи.

Источник

как в excel определить пол по фио

Определение пола по имени

Классическая задача, с которой периодически сталкивается почти любой пользователь Microsoft Excel: нужно определить пол для каждого человека в списке. Давайте рассмотрим несколько решений для такой задачи.

Вариант 1. Полные ФИО, только «наши»

Функция ПРАВСИМВ (RIGHT) извлекает из ФИО один символ справа (последнюю букву отчества), а функция ЕСЛИ (IF) проверяет извлеченный символ и выводит «ж» или «м», в зависимости от результата проверки.

Вариант 2. Полные ФИО, есть «экспаты»

Если в списке есть имена не только русского типа (назовем их «экспаты»), то к приведенной ранее формуле можно добавить еще одну проверку, чтобы отлавливать их тоже:

Вариант 3. Неполные или переставленные ФИО, только «наши»

Если в нашем списке отчества есть не у всех (или их нет совсем) или ФИО идет в другом порядке (ИФО, ИФ, ФИ), то придется использовать принципиально другой подход. Создадим таблицу-справочника со всеми женскими именами (я использовал для этого википедию):

Созданную таблицу я преобразовал в «умную» (выделить ее и нажать Ctrl+T), чтобы потом не думать про ее размеры и дополнять справочник новыми именами в любое время. На появившейся вкладке Конструктор (Design) умной таблице лучше дать отдельное имя (например жен), чтобы потом использовать его в формулах:

Нужная нам формула для определения пола будет выглядеть так:

Давайте разберем ее по шагам на примере первого человека:

Функция ПОИСК (SEARCH) ищет вхождения по очереди каждого женского имени из умной таблицы жен в строку «Храброва Алла Сергеевна» и выдает на выходе либо ошибку #ЗНАЧ (если не нашла), либо порядковый номер символа, начиная с которого имя входит в ФИО. На выходе мы получаем массив:

Число 10 на седьмой позиции в этом массиве фактически означает, что седьмое женское имя Алла из умной таблицы-справочника входит в первое ФИО Храброва Алла Сергеевна начиная с 10 символа.

Затем функция ЕСЛИОШИБКА (IFERROR) заменяет ошибки #ЗНАЧ! на нули. В результате получаем:

Функция СУММ (SUM) суммирует все числа в получившемся массиве и если получается число больше нуля, то функция ЕСЛИ (IF) выводит «ж», в противном случае «м».

Не забудьте после ввода формулы нажать сочетание клавиш Ctrl+Shift+Enter, т.к. ее нужно ввести как формулу массива.

Вариант 4. Неполные ФИО, есть «экспаты»

Если в списке могут встречаться экспаты или нестандартные имена, которых нет в справочнике, то предыдущая формула будет автоматом относить человека к мужчинам, что не есть хорошо. Поэтому для полной универсальности можно добавить справочник мужских имен и еще одну проверку, как мы уже делали в варианте-2:

Как определить пол по отчеству (ПРАВСИМВ)

Этот пример я решил разобрать, чтобы разобрать комбинацию из формул ЕСЛИ и ПРАВСИМВ.
Разберём тот случай, когда после применения не самой замудрённой формулы в Microsoft Excel, у обычного зрителя возникает ощущение «ВАУ».

Перед нами таблица с ФИО, и наша задача — определить с помощью формулы пол по отчеству.
По традиции можете посмотреть видео, пример для скачивания доступен выше.

Для начала немного теории…
Все мужские отчества заканчиваются на букву «-ч», женские — на «-на».
Нам остаётся просто воспользоваться логической функцией: если отчество заканчивается на букву «-ч», значит пол мужской.
В противном случае, пол — женский.

В ячейку C2 запишем формулу:

«=ЕСЛИ(ПРАВСИМВ(B2;1)=»ч»;»м»;»ж»)»

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

Согласитесь, красивое решение.
Просто, одной формулой, которая состоит из функций ЕСЛИ и ПРАВСИМВ, мы так красиво решили задачу.

Читайте также:  снять квартиру в новосибирске возле мешалкина

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

Вам так же доступно видео, возможно кому-то будет так удобнее.

Больше полезных видеоуроков на нашем YouTube канале.
Если у Вас возникли вопросы или просто хотите поделиться мнением, напишите в комментариях к записи.

Практичный email маркетинг

Узнаём пол подписчика по имени (№96)

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

Предположим, у нас есть база email+имя, которая насчитывает 10 000 подписчиков. Информация о поле заранее не собиралась, а сейчас вдруг понадобилась для какой-то сегментированной рассылки — например, для поздравления с «гендерными» праздниками: 23 февраля / 8 марта.

Программиста, который может обработать базу автоматически, в нашей команде нет. Проставить отметку о поле каждого контакта вручную, конечно же, нереально — это и трудоёмко, и долго. Остаётся прибегнуть к старому-доброму Эксель:-)

Скажу наперёд, что задачка, которая здесь разбирается, уже была решена в блоге Юнисендер (см. Как в Unisender сегментировать базу по полу). Но там представлен сразу конечный результат.
Мне же хочется пройти все шаги, что, на мой взгляд, не только интересно, но и полезно, как своеобразное «упражнение» по работе с данными.

Прежде чем приступить к решению самой задачи, важно выполнить 2 условия:

• Провалидировать email-адреса
(т.е. проверить их подлинность, например, с помощью Mailvalidator).

Это делается в том случае, если по ним ещё никогда не отправлялись рассылки. Если мы берём уже «приработанную» базу из сервиса рассылок, то валидация не требуется.

• Привести в порядок некорректные имена
(Саня → Александр, Tatiana → Татьяна, dfsdfsf → X ).

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

Пол подписчиков по имени

1. Открываем нашу базу в Экселе — в первом столбце email, во втором имена:

2. Создаём в одном из соседних столбцов (не вплотную) базу использующихся у нас имён:

→ копируем столбец с именами полностью,
→ используем опцию Экселя «Данные / Удалить дубликаты», чтобы отсеять повторяющиеся значения,
→ выполняем сортировку по алфавиту (не включая соседние столбцы).

Скорее всего из 10 000 записей у нас получится несколько сотен имён — всё ещё довольно много, но объём уже не запредельный.

3. Ставим пометку о поле вручную напротив каждого имени из получившегося «короткого списка»:

Иногда могут попадаться сложные имена, пол которых так сходу не определить. Для начала ставим им нейтральную пометку (скажем, «н») и, не останавливаясь, идём дальше.

Позже, когда мы дойдём до конца списка, все имена с пометкой «н» можно отсортировать:

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

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

4. Добавляем пометку о поле всем нашим подписчикам:

→ вбиваем в третий столбец, рядом с email+именами, экселевскую формулу

=ЕСЛИОШИБКА(ВПР(B2;F:G;2;0);“н”)

Буквально она означает следующее:

Если значение в ячейке B2 (наше первое имя) совпадает с каким-либо значением из столбца F, где у нас полный список имён, то в третий столбец подставится соответствующее значение из столбца G.

Как отдельный случай: если имя у контакта отсутствует, в ячейку третьего столбца подставится нейтральная пометка «н».

Подробнее об используемой формуле в справке Support.office.com:

→ копируем формулу во все ячейки напротив наших контактов:

→ получаем пометку с полом м/ж (или «н» при отсутствии информации) в каждой из 10 000 строк. Готово!

Результат можно скопировать в отдельный файл (копируем только значения — чтобы не «тащить» за собой формулы из ячеек):

И далее этот файл загрузить в сервис рассылок / обновить в нём данные о подписчиках, если они там уже были.

Так где-то за полчаса-час мы проработаем всю нашу базу и получим возможность сегментировать её по полу в рассылках.

Например, накануне 23 февраля отправим мужчинам поздравление (держите подарок — скидку 10% на всё), женщинам — предложение поздравить мужчин (держите скидку 10% на подарки), подписчикам без информации о поле — общее письмо, где просто поздравляем с праздником в нейтральных тонах:

Как правило, рассылки с использованием данных о поле достаточно «редкие птицы». У среднестатического проекта они случаются раз-два в год — как раз под те самые праздники.

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

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

Или с помощью программиста создать скрипт, определяющий пол подписчика по имени после подписки.

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

В сети встречаются готовые решения, чтобы определить пол подписчиков по имени, также обработать прочие данные (как бесплатные — см. статью в блоге Юнисендер выше, так и платные — например, Dadata.ru).

Однако, на мой взгляд, для максимальной прозрачности и точности стоит попробовать «собрать» собственное решение по работе с такими задачами.

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

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

[В следующий раз нас ждёт кейс по анкетированию: как разослать 8000 писем и получить с этого 600 заполненных анкет].

P.S. Ещё больше информации и механик работы с данными для рассылок есть в 4-5 уроках «Email маркетинга под ключ». Если вам интересно глубже исследовать этот вопрос — добро пожаловать на курс! Тем более его основные материалы совершенно бесплатны.

Если вы ещё не подписались на мою рассылку — самое время это сделать 😉

Excel трюк: Достаем фамилию из ФИО

Excel трюк: Достаем фамилию из ФИО

У меня было сотня случаев, когда из списка сотрудников необходимо было достать фамилию или имя. При этом список насчитывал минимум пару сотен человек и делать это в ручную было очень грустно. Хорошо, что в Excel есть все необходимые инструменты, позволяющие оптимизировать данный процесс и решить поставленную задачу за несколько минут. Текстовые формулы Excel, позволяют решать подобные задачи. Сейчас я вам все подробно объясню на примере нескольких актеров любезно предоставленных первой страницей Google.

Текстовые формулы Excel, которые нам понадобятся

Для решения поставленной задачи нам понадобится собственно Excel и следующие стандартные текстовые функции:

Наш особенно сообразительный читатель возможно уже догадался как решить нашу задачу, но я всё же объясню для всех по шагам как это нужно было бы мне 🙂

Для решения нашей задачи нам понадобиться:

Звучит как план к действию. Приступим!

Фукнция ДЛСТР

Функция ПОИСК

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

Важно отметить, что пробел или искомый текст в данной функции записывается в ковычках. В частности это будет примерно так =ПОИСК(» «; ‘ячейка с текстом’).

Учитывая, что фамилия находится после второго пробела мы будем использовать два поиска, один из них вложенный для поиска первого пробела, как на примере ниже:

Функция ПРАВСИМВ

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

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

Читайте также:  габриэль зена королева воинов актриса

Компьютерная грамотность с Надеждой

Заполняем пробелы – расширяем горизонты!

Извлечение фамилии из ФИО в Excel: способ перевода на язык цифр

Иногда кажется, что компьютеры и другие устройства (телефоны, смартфоны, планшеты и прочее) понимают нас с полуслова, с одного жеста, или даже читают мысли. Действительно, современные компьютеры и их «младшие братья и сестры» выполнены классно! Но кто и как сделал их такими понятливыми? Для наглядности рассмотрим этот вопрос на примере, как компьютер может извлечь фамилию из ФИО в Excel.

Умеют ли думать компьютеры

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

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

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

Как научить компьютеры думать

Чтобы компьютер или другое устройство могло уверенно общаться с человеком (пользователем), его нужно запрограммировать. Программисты умеют переводить наши человеческие запросы, чаяния, желания на язык бездушного (но удивительно быстрого!) процессора. Именно программисты делают так, чтобы компьютер превращался в умного помощника.

Перевод нашего человеческого мышления на язык цифр, который понимает компьютер, – это дело рук программистов. Только программисты знают, как оцифровать наше во многом непредсказуемое и потому непрограммируемое человеческое мышление.

Программирование – непростое занятие. Хотя для современных программистов сделано немало полезных приложений, языков программирования, эмуляторов, имитаторов и прочее. Им значительно проще, чем тем, кто начинал подобную работу лет 30-50 тому назад. Все равно современным программистам сложно. Но они – справляются!

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

Фамилия из ФИО в Excel: как ее извлечь

Пример возьмем следующий. Допустим, перед нами фамилия, имя и отчество некоего человека: Завьялова Анна Петровна. Никто конкретно не имеется в виду, просто случайно выбранная ФИО (фамилия, имя, отчество). Задача для программиста будет следующая: выделить с помощью программного кода из ФИО одну лишь фамилию.

Казалось бы, в чем проблема? Что, разве не видно, что фамилия указанного человека – Завьялова? Да, видно тем, кто умеет читать. Но компьютер не умеет читать. Он не может смотреть как мы и не может думать, как мы. Он умеет только считать. Как «сосчитать» из ФИО одну только фамилию? В этом-то и будет заключаться задача, которую мы ставим перед гипотетическим программистом.

Для решения задачи давайте использовать табличный редактор Microsoft Excel, у которого также есть разные аналоги, например, таблицы Liber Office и др. Итак, допустим, мы – программисты. Сейчас мы попробуем с помощью программного кода извлечь фамилию из ФИО в Excel.

На новом чистом листе табличного редактора Excel в ячейку B2 вводим ФИО (Завьялова Анна Петровна) и выделяем ее желтым цветом для наглядности. Также размечаем таблицу наших последующих действий (рис. 1).

Рис. 1. Ввод ФИО в ячейку B1 и предварительная разметка листа табличного редактора Microsoft Excel.

В столбце с заголовком № п/п мы будем записывать цифры 1, 2, 3 и так далее – это предстоящие попытки извлечения фамилии из ФИО.

Далее в столбце Фамилия будут размещаться результаты наших попыток.

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

Извлечение подстроки из строки текста в Excel

Начнем первую попытку. Давайте посмотрим, как можно из строки текста извлечь некоторую его часть. Перед нами строка: Завьялова Анна Петровна. С точки зрения человека, мы видим тут осмысленный текст. Нет никаких проблем что-либо их этого текста извлечь. Вам фамилию? Извольте: Завьялова!

Однако, с точки зрения компьютера, который умеет только считать, перед его «глазами» расположена лишь последовательность символов: З, а, в, ь, я, л, о, в, а, [пробел] (это тоже символ, равный по значению любому другому символу текста), А, н, н… И так далее. Получается, что компьютеру нужно из всей строки взять только несколько первых символов, начиная с символа З, и заканчивая символом а.

Так пусть возьмет! А как? У компьютера нет глаз, рук и прочего. Компьютер умеет только выполнять заложенные в него программы. Программу (код) надо кому-то написать. Вот мы и начнем писать.

Так как процессор компьютера умеет только считать, придется написать код так, чтобы он мог быть выполнен с помощью каких-либо расчетов. Поэтому нам придется «сказать компьютеру» (иными словами, запрограммировать) примерно следующее: «Из строки Завьялова Анна Петровна, пожалуйста, извлеки подстроку, начиная с символа с порядковым номером 1, и заканчивая символом с порядковым номером 9».

В строке Завьялова Анна Петровна первый символ – это З. Девятый символ – это а. А все, что находится между первым и девятым символами строки – это и есть фамилия Завьялова. Согласны? Теперь попробуем нашу мысль, сформулированную по-русски, перевести на язык программирования, понятный компьютеру.

Функция ПСТР в Excel для выделения фамилии из ФИО

Каким языком программирования мы воспользуемся? Формулы Excel вполне для этого подойдут, раз уж мы выбрали Эксель для нашего примера. В Excel есть функция ПСТР (сокращение от «подстрока»). В формуле ПСТР нужно:

Таким образом мы пишем следующую расчетную формулу:

– вот так это выглядит в исполнении для компьютера, для Excel.

Вводим указанную формулу в ячейку B4, и получаем результат: фамилию Завьялова в ячейке B4 (рис. 2):

Рис. 2. Результат применения формулы ПСТР в табличном редакторе Excel для извлечения Фамилии из ФИО.

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

Итак, извлечь Фамилию из ФИО в Excel получилось! Мы имеем то, что хотели с помощью программы на компьютере. Мы смогли из ФИО извлечь первые 9 символов – это и есть искомая фамилия. Главное: нам удалось оцифровать задачу.

Мы сумели цифрами объяснить программе, компьютеру, процессору, какие данные он должен откуда взять и как их обработать. Главные цифры нашей небольшой успешной программы – это 1 и 9, начало и конец подстроки текста. Компьютер в цифрах знает толк, понимает их, делает то, что нам нужно. Как видим, ни о каких буквах (а ФИО – это буквы!) тут речь не идет. Вместо букв мы оперируем их порядковыми номерами в строке. Вот вам и оцифровка: по номерам позиций букв в строке!

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

Функция СЖПРОБЕЛЫ в Excel для удаления лишних пробелов в тексте

ФИО мы вводили вручную в ячейку B1. При ручном вводе не исключены ошибки. Допустим, в начале ФИО мы поставили бы пару-тройку лишних пробелов. Какой бы мы получили результат вычислений? Давайте посмотрим (рис. 3):

Рис. 3. Результат работы функции ПСТР в Excel, если в начале исходной строке случайно поставлены лишние пробелы.

Прекрасно видно, что первые три лишних пробела остались в тексте Фамилии в ячейке B4, поэтому фамилия сократилась ровно на 3 символа и стала Завьял. Результат – неверный! Подобные ошибки ввода не исключены, и нам (программистам) надо их предусмотреть.

Для удаления лишних пробелов в тексте в Excel применяется функция «сжать пробелы», которая выглядит так: СЖПРОБЕЛЫ. В качестве аргумента этой функции надо подставить исходную строку.

Функция СЖПРОБЕЛЫ удаляет все пробелы, которые стоят в начале исходной строки. Также она удаляет все пробелы в самом конце исходной строки, и оставляет строго по одному пробелу, если пробелы дублируются в середине строки.

В нашем примере исходный текст ФИО находится в ячейке B1, поэтому мы так и запишем: СЖПРОБЕЛЫ (B1).

Этот новый текст СЖПРОБЕЛЫ (B1) надо подставить вместо ячейки B1. В окончательном виде формула расчета, которую мы запишем в ячейку B5, будет выглядеть так:

Результат налицо: получаем требуемую фамилию Завьялова теперь уже в ячейке B5 (рис. 4).

Рис. 4. Исключение лишних пробелов в исходной строке текста Excel с помощью функции СЖПРОБЕЛЫ.

Слева добавим вручную «двойку» 2, а справа повторим нашу формулу для наглядности. Теперь всё? – спросит нетерпеливый читатель. Ответим, увы, нет! Потому что могут быть еще проблемные ситуации. Следовательно, продолжаем.

Читайте также:  как сделать крышу ондулин

Как извлечь фамилию любой длины из ФИО в Excel

Как поведет себя наша программа (код), если мы вместо прежней ФИО подставим в ячейку B1 совсем другую строку? Например, Завгороднев Игорь Петрович (рис. 5).

Рис. 5. Проверяем, как поведет себя написанная программа в Excel после подстановки в нее другой исходной строки ФИО.

Совершенно очевидно, что программа (код) не сработала так, как нужно. Мы получили какой-то кусочек фамилии – Завгородн. Почему так вышло? Потому что мы извлекаем из исходной строки ФИО подстроку строго определенной длины, с первого до девятого символа. Но ведь далеко не все возможные существующие фамилии имеют длину 9 символов!

Значит, придется нам программу (код) изменить так, чтобы компьютер мог извлечь фамилию любой длины. Как это сделать программисту? Встаем в его положение. Он думает, думает, и… понимает, что любая фамилия в ФИО всегда заканчивается пробелом. Пробел отделяет фамилию от имени.

Значит, понимает программист, надо попытаться найти номер позиции в ФИО, в которой стоит пробел. В фамилии Завьялова – это 10-я позиция. В фамилии Завгороднев – это уже12-я позиция. Видите, программист пытается оцифровать задачу, чтобы потом эти цифры донести до компьютера. Иначе – никак, компьютер понимает лишь язык цифр, он умеет только считать!

Функция НАЙТИ в Excel для поиска нужного символа в строке текста

В Excel есть функция, которая позволяет определить номер интересующего символа в строке текста. Это функция НАЙТИ. В ней указывают сначала, что нужно найти в строке, а затем саму строку.

Значит, записываем: НАЙТИ (“ “ ; B1). Что это означает? Ищем пробел, который обрамлен в кавычки – так записывают в Excel отдельные символы. И ищем пробел в строке, которая записана в ячейке B1 – там у нас размещена ФИО. А еще в приведенной функции НАЙТИ вместо B1 нам придется записать функцию СЖПРОБЕЛЫ (B1) для исключения лишних пробелов:

В результате функция выдаст номер позиции (искомую цифру, именно цифру. ) в ФИО, где стоит пробел. Мы этот номер уменьшим на единицу (ведь фамилия короче на 1 символ как раз из-за этого разделяющего пробела). И затем подставим функцию НАЙТИ вместо цифры 9 в прежнюю функция ПСТР.

В итоге цифра 9 будет заменена вычислением. Расчет позволяет динамически изменить цифру – это номер последнего символа в фамилии. Значит, теперь при подстановке любой фамилии в ячейку B1, наша формула будет автоматически и правильно находить последний символ фамилии.

Совместное применение функций Excel: ПСТР, СЖПРОБЕЛЫ и НАЙТИ

Итак, пишем формулу расчета для выделения фамилии любой длины из ФИО:

Переведем на русский язык, что мы только что записали:

Итог работы такого теперь уже достаточно сложного и неочевидного расчета – это фамилия Завгороднев в ячейке B6, куда мы поместили наш расчет (рис. 6). Ура, сработало!

Рис. 6. Пример совместного использования функций Excel ПСТР и НАЙТИ для извлечения фамилии произвольной длины из строки ФИО.

Извлечение фамилии из ФИО в Excel: пример мини программы

Все ли под силу программистам

Вот так, с третьей попытки нам (программистам) удалось извлечь ЛЮБУЮ фамилию из ЛЮБОЙ ФИО. Тогда как вручную любой человек эту работу сделал бы без таких проблем, связанных с оцифровкой задачи для компьютера. Правда, если бы таких ФИО было, скажем, миллион, то человек уже не справится. А компьютер с его сумасшедшей производительностью не то что миллион, и миллиард, пожалуй, сможет потянуть.

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

Но все ли возможные проблемы решены выше? Конечно, нет. В реальной жизни может быть такое, что сложно даже представить, не то, чтобы перечислить. Например, вместо буквы «З» в начале фамилии будет поставлена цифра 3. Внешне символы выглядят одинаково.

Наша только что написанная программа спокойно сработает с «тройкой». Правда, если потом придется фамилии расположить в алфавитном порядке, «тройка» встанет перед «А», а не после «Ж». Непорядок! Значит, надо научить компьютер распознавать «тройки» и автоматически заменять их на буквы «З». Можно также перепутать и другие пары цифры-буквы, например, 0 и «О», а также 4 и «Ч».

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

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

Возьмем еще более сложную задачу. Что делать компьютеру, если ФИО напечатана наоборот: имя, отчество, фамилия? Придется искать фамилию не с первой позиции до первого пробела (как мы это сделали выше), а со второго пробела и до конца строки. Это намного сложнее сформулировать программисту.

Какие задачи могут быть неразрешимыми для программистов

И совсем неразрешимая задача, если отдельные ФИО будут введены «правильно» (фамилия, имя, отчество), а другие «неправильно» (имя, отчество, фамилия). Как обучить компьютер находить фамилию в тексте, если фамилия не будет стоять на своем строго закрепленном месте?

Фамилия – первая или третья в строке? Глазами-то мы увидим фамилию сразу. Но как оцифровать данную задачу?! Ведь для компьютера, как мы немного убедились выше, нужно однозначно указать, с какого символа по какой символ располагается фамилия в тексте ФИО. Однозначно указать не получится – это может быть с первого символа до первого пробела, либо со второго пробела и до конца. Что значит «либо»? С первого символа или со второго пробела?!

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

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

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

Об искусстве программирования

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

Вручную человек легко решает задачи подобного рода, например, извлечение фамилии из ФИО. Для этого у человека есть разум, который помогает ему в поиске и выборе. У компьютера и его основного «работника» процессора разума НЕТ! Процессор умеет только считать. Цифры для компьютера должны быть окончательными и однозначными.

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

Компьютер же может только считать, повторю это в который раз! Складывать, умножать, сравнивать… Он даже вычитает путем сложения с отрицательными числами, и делит не совсем так, как мы могли бы сделать, скажем, «столбиком».

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

Программирование (иными словами кодирование) – это искусство перевода человеческого мышления на язык цифр! Это именно искусство, поскольку невозможно заранее и для всех мыслимых и немыслимых случаев сделать четкие инструкции. Были бы инструкции – работа программистов напоминала бы ремесло. Сам же процесс составления инструкций выглядел бы в некотором смысле прототипом науки. Но тут не ремесло и не наука, а именно искусство!

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

Источник

Развивающий портал