Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2009, 19:28   #1
KinderX
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 36
По умолчанию Из родительного падежа в именительный падеж

Есть:

Попова Сергея Сергеевича
Поповой Анны Николаевны

Как написать форму, чтобы получилось:

С.С. Попов
А.Н. Попова

Надо, чтобы в фамилии удаляло ой и а к конце слова,а имя и отчество были сокращены и поставлены в перёд.
KinderX вне форума Ответить с цитированием
Старый 01.07.2009, 20:59   #2
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

А если фамилии Коновой, Мазепа и т.д. тогда что?
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 01.07.2009, 21:28   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Dim a
Dim b As String

Dim slo As String
slo = "Попова Сергея сергеевича"
a = Split(slo, " ", -1)

b = Left(a(1), 1) & "." & Left(a(2), 1) & ". " & Left(a(0), 5)
Про окончание сами думайте варианты
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 01.07.2009, 22:02   #4
KinderX
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 36
По умолчанию

Это я так понимаю, это только для перестановки.
А как можно сделать на функциях? Пример:
1. Три слова разместить в разные ячейки.
2. Из 2 и 3 взять первые буквы.
3. В первой определить какие буквы в конце и условием заменить концовку, т.е. если "а" то "", если "ой" то "а".

Такое реально или нет, можно ли описать такое программно

Последний раз редактировалось KinderX; 01.07.2009 в 22:11.
KinderX вне форума Ответить с цитированием
Старый 01.07.2009, 22:39   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Очень интересная задача. Я попробовал ее решить в общем виде. Результат в приложении.
Поскольку все окончания не упомнишь, то я оставил возможность добавления своих окончаний. В коде это сделано с помощью строковых констант:
Код:
'Окончания родительного падежа для фамилий мужского рода
Private Const MALECASEENDS = "ова я ого а"
'Окончания именительного падежа для фамилий мужского рода.
'Знак $$ означает, что окончания в именительном падеже нет
Private Const MALEENDS = "ов ь ий $$"

'Окончания родительного падежа для фамилий женского рода
Private Const FEMALECASEENDS = "ову у "
'Окончания именительного падежа для фамилий женского рода
Private Const FEMALEENDS = "ова а"
Добавляете в константу MALECASEENDS свое окончание родительного падежа через пробел, а в константу MALEENDS вариант этого окончания в именительном падеже. Если окончания нет, то ставьте два знака доллара. Вроде у меня работает.

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

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

Прошу пробовать и спрашивать.
Вложения
Тип файла: rar Падежи.rar (14.0 Кб, 486 просмотров)
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 01.07.2009, 22:42   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от KinderX Посмотреть сообщение
Это я так понимаю, это только для перестановки.
А как можно сделать на функциях? Пример:
1. Три слова разместить в разные ячейки.
2. Из 2 и 3 взять первые буквы.
3. В первой определить какие буквы в конце и условием заменить концовку, т.е. если "а" то "", если "ой" то "а".

Такое реально или нет, можно ли описать такое программно
Так вам функциями нужно?

А что означает это:
Цитата:
Сообщение от KinderX Посмотреть сообщение
…Как написать форму, чтобы получилось:…
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 02.07.2009, 05:58   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение с решением с помощью пользовательской функции.
В дальнейшем, при добавлении требуемых замен, в коде функции добавляйте в массив b то окончание, которое нужно заменить, а в массив c - то, на которое нужно заменить. При этом обязательно соблюдать последовательность в массивах.
Функция просматривает окончания из 1-й и 2-х последних букв. Если нужно, то без труда можно сделать для любого количества. Только при просмотре обязательно нужно начинать с наибольшего количества символов контролируемых окончаний.
Вложения
Тип файла: rar Книга1.rar (7.2 Кб, 288 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 02.07.2009 в 06:03.
SAS888 вне форума Ответить с цитированием
Старый 02.07.2009, 17:12   #8
KinderX
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 36
По умолчанию

SAS888 пример не плох, но надо описать весь алфавит, что я и сделаю.
Проще не придумаешь, да со временем находя ошибки в тексте, можно будет задать с лёгкостью новое правило замены, что в итоге приведет через кое какое время, будет не плохая база для этого примера. Одно только плохо может получится, если попадет мужская фамилия с буквой А на конце(бывают и такие).

Viter.Alex тебе тоже большое спасибо, примного благодарен тебе .

Ребята не поможете еще?
При стерании всех чисел выдаёт ошибку как её исправить?

Private Sub TextBox1_Change()
Cells(2, 15).Value = TextBox1.Text Or Cells(2, 15).Value = TextBox1.Value
End Sub
KinderX вне форума Ответить с цитированием
Старый 02.07.2009, 19:48   #9
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от KinderX Посмотреть сообщение
…Одно только плохо может получится, если попадет мужская фамилия с буквой А на конце(бывают и такие). …
Пусть функция проверяет пол человека и никаких проблем. Как это сделать, я описал в своем примере.
Цитата:
Сообщение от KinderX Посмотреть сообщение
…Ребята не поможете еще?
При стерании всех чисел выдаёт ошибку как её исправить?

Private Sub TextBox1_Change()
Cells(2, 15).Value = TextBox1.Text Or Cells(2, 15).Value = TextBox1.Value
End Sub
Странная запись. что ты хочешь добиться с ее помощью? Убери TextBox1.Value.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 02.07.2009, 20:16   #10
KinderX
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 36
По умолчанию

Цитата:
Сообщение от KinderX
…Ребята не поможете еще?
При стерании всех чисел выдаёт ошибку как её исправить?

Private Sub TextBox1_Change()
Cells(2, 15).Value = TextBox1.Text Or Cells(2, 15).Value = TextBox1.Value
End Sub

Странная запись. что ты хочешь добиться с ее помощью? Убери TextBox1.Value.

Это у меня от меню на листе. В TextBox1_Change вводится число которое задаётся в ячейку, но при стирании Backspace'ом числа выдает ошибку!
KinderX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматическое изменение падежа слова B00lean Microsoft Office Word 5 20.03.2009 00:43