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

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

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



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

#1
Thomas

Thomas

    Excel Pro

  • 61 сообщений
  • 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 If
End 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 If
End Function
Ну и наконец, после того, как мы определили пол, можно смело использовать стандартную сортировку в книге.
А для большей уверенности ниже Вы можете скачать надстройку, которая добавит обе рассмотренные функции в уже записанные макросы.
 
СКАЧАТЬ

Вес: 15,73К


Загрузок: 7



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





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

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