Всем добрейшего денёчка Бывают ситуации, когда имеется список людей в 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К Загрузок: 18