Перейти к содержимому

Фотография
- - - - -

Сортировка мужчин и женщин в Excel



  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1
Thomas

Thomas

    Excel Pro

  • 60 сообщений
  • 10 благодарностей
12
  • Город:Москва
  • Office:2003, 2010, 2013, Online
Всем добрейшего денёчка :) Бывают ситуации, когда имеется список людей в Excel, который содержит полные фамилию, имя и отчество. Зачастую в таких списках присутствуют и мужчины и женщины. И конечно же нужно прибегнуть к сортировке этого списка по половой принадлежности, т.е. отделить мужчин от женщин. Сделать это конечно же можно при помощи макроса, которым мы будем определять последнюю букву в отчестве и в последующем определим его пол.   В данном примере мы рассмотрим варианты только с популярными примерами отчеств, например, Иванович, Семёнович, Александрович, которые заканчиваются на букву "ч". Естественно есть и такие редкие варианты, как Надыр Оглы, их мы рассматривать не будем :) Есть 2 варианты определения пола, которые мы разберем ниже.   1. Определение пола по отчеству Предположим в таблице есть фамилия, имя и отчество и они находятся каждый в своей ячейке, а не всё в одной. В этом случае мы можем воспользоваться такой функцией:
'Определение пола по отчествуFunction ПолПоОтчеству(Отчество As String) As String    If Len(Отчество) > 0 Then        Select Case Right(Отчество, 1)            Case "ч", "ы"                ПолПоОтчеству = "М"            Case Else                ПолПоОтчеству = "Ж"        End Select    End IfEnd Function
Что мы получим в результате: мы можем сделать исключение и добавить наше редкое отчество Оглы, которое так же будет участвовать в сортировке. Просто напросто мы внесли изменения в код и добавили после буквы "ч" букву "ы". Тем самым у нас создалось условие, если отчество заканчивается на "ы", то это мужской пол. Соответственно функция возвращает значения в зависимости от окончаний отчества, либо М либо Ж.   2. Определение пола по ФИО Если же в нашей таблице фамилия, имя и отчество в одной ячейке, то для начала нам нужно разделить их по разным ячейкам, а только потом выполнять процедуру, описанную в первом варианте. Данная функция будет иметь следующий вид:
'Определение пола по ФИОFunction ПолПоФИО(ФИО As String) As String    Dim Фамилия As String    Dim Имя As String    Dim Отчество As String    Dim Temp As String 'ФИО делится на части    Фамилия = Trim(Left(ФИО, InStr(ФИО, " ")))    Temp = Right(ФИО, Len(ФИО) - InStr(ФИО, " "))    Имя = Trim(Left(Temp, InStr(Temp, " ")))    Отчество = Right(Temp, Len(Temp) - InStr(Temp, " "))        If Len(Отчество) > 0 Then            Select Case Right(Отчество, 1)                Case "ч", "ы"                    ПолПоФИО = "М"                Case Else                    ПолПоФИО = "Ж"            End Select        End IfEnd Function
Ну и наконец, после того, как мы определили пол, можно смело использовать стандартную сортировку в книге. А для большей уверенности ниже Вы можете скачать надстройку, которая добавит обе рассмотренные функции в уже записанные макросы.   СКАЧАТЬ

Вес: 15,73К


Загрузок: 8



Господа! Регистрируйтесь и задавайте свои вопросы, связанные с Microsoft Office. Поможем, чем сможем ;)





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных