|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.03.2011, 12:34 | #1 |
Форумчанин
Регистрация: 18.08.2009
Сообщений: 289
|
Преобразование в транслит и запись в ячейку
У меня в Excel есть список вида
(см. вложение) Я хочу написать скрипт на VBA, который будет:
Понимаю, что мне тут нужна будет таблица транслита и, по ходу, регулярные выражения. Вопрос мой в другом: подскажите ссылки, по которым можно почитать информацию по моему вопросу. А то в гугле примеры не совсем для меня, немного сложные. А я VBA мало занимался (php в основном), долго в них разбирался. Вот на php знаю книжки, в которых конкретные мини-задачи разбираются (открытие файла, чтение из массива и тд.), кто подскажет на VBA похожие книжки? |
13.03.2011, 12:58 | #2 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
1) Никаких регулярных выражений здесь не нужно.
Достаточно циклической подстанови с помошью функции Replace. 2) Вызывает большое сомнение постановка задачи Иванов Виталий Алексеевич и Иванов Виктор Александрович получат один и тот же комплект логина и пароля ... Да и сам пароль уж больно крутой Для сведения (если это реальная задача а не учебный пример): 3) Отчества бывают сложные типа Курбанбек Баши оглы. 4) Отчества может не быть совсем как такового 5) Имён (в т.ч. у Российских граждан) может быть несколько. Реальный вариант из жизни: человека по паспорту звали Уткин Игорь Михаил Кристиан Харральдович 6) Имя и отчество могут содержать дефис. В этом случае по правилам формирования инициалов берутся 2 буквы через дефис. 7) Транслитерация в латиницу фамилий для английского, немецкого, французского и испанского производится по разным правилам. В остальном, наберите в Google "VBA для чайников" и будет вам счастье. Последний раз редактировалось Aent; 13.03.2011 в 16:58. |
13.03.2011, 14:08 | #3 | |
Форумчанин
Регистрация: 21.11.2010
Сообщений: 326
|
Цитата:
http://www.excelworld.ru/index/knigi...plication/0-12 |
|
13.03.2011, 14:10 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Aent, смог! я даже не пытался над всем этим задуматься.
Уткин Игорь Михаил Кристиан Харральдович - а человеку с этим жить. хорошо хоть Акакием не назвали, бывает родители не любят своих детей еще при рождении... допускаю, что Харральд сделал в отместку за свое имя. задача решена в лоб. после прочитанного понимаю, может использоваться исключительно, как пример.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
13.03.2011, 14:26 | #5 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Цитата:
Я использую пока слишком упрощённый вариант - но хотелось бы найти универсальное решение (часто требуется в работе): Код:
|
|
14.03.2011, 23:45 | #6 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
EducatedFool, c инициалами вопрос очень мутный.
Во первых, не существует точного формального алгоритма разделения ФИО на части. Отделить фамилию от имени формально нельзя не зная генеологии и языка носителя. Можно только воспользоваться разнообразными эвристиками. Кроме того, разные органы (в разное время) придерживались (-ются) разных взглядов на то как в том или ином случае должны выглядеть инициалы. Одно дело документы УФМС - другое, регистраторы ЦБ, третье - оформление коммерческих документов. Так, часть служб требует что бы 2-3 сложные короткие имена Юго-Восточной Азии не сокращались. А часть нет. Да же с вопросом где должны стоять инициалы справа или слева - нет однозначности. Нет, конечно есть правила русского языка... Но превалируют правила делового оборота той или иной структуры (или просто как захочет левая задняя нога клерка принимающего документы)... У многих возможно возникает вопрос: А откуда берётся весь этот зоопарк и зачем это всё нужно? Как правило, все эти Доны Педро - иностранные граждане получающие Российский паспорт на основании ранее выданных вне юрисдикции РФ документов. Ситуации правовые бывают разные. И достаточно часто в новый Российский паспорт пишется вариант транслитерации на кириллицу с языка носителя. Российские паспорта с -оглы и -кызы выдаются сейчас в Татарстане. Мне встретился клиент которого по паспорту 2007 г. звали Мустафа Олег оглы... Лет 15 назад я слепил на коленке ad hoc функцию Инициалы. Привожу её в UDF варианте вместе с вариантом, предложенным вами (Который весьма элегантен и в 90% жизненных ситуаций даст правильный результат). Код функции Инициалы строился годы как стройная система костылей и подпорок. До глобального рефакторинга руки так и не дошли Ещё раз подчеркну - приводится весьма упрощённый эвристический алгоритм. Да же список служебных частиц для тюркско-арабских имён не полный. Тем ни менее он охватывает подавляющее большинство реально встречавшихся вариантов. Хотя, для, скажем, фрайхерра фон унд цу Гуттенберга Карла-Теодора Марии Николауса Иоганна Якоба Филиппа Франца Йозефа Сильвестра результат будет неверным. Благо, министр обороны Германии не российский гражданин Последний раз редактировалось Aent; 15.03.2011 в 02:56. |
15.03.2011, 07:05 | #7 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Aent, большое спасибо за функцию
Добавил её себе в записную книжку |
18.06.2011, 01:03 | #8 | |
Форумчанин
Регистрация: 18.08.2009
Сообщений: 289
|
Спасибо за ответы. Если у кого-то еще будут мнения, пишите, с удовольствием почитаю.
Так как сам лучше всего знаю php, решение своего вопроса придумал именно на нем: Написал три скрипта: sozdaem_logini_i_paroli_studentov.p hp PHP код:
PHP код:
PHP код:
Цитата:
|
|
18.06.2011, 22:26 | #9 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
А не проще ли было найти в интернете готовую функцию транслита на VBA?
http://excelvba.ru/code/translit |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запись из эдита в ячейку таблицы | Balabar | Помощь студентам | 1 | 25.11.2010 20:20 |
формула суммпроизв. запись в ячейку | gsg | Microsoft Office Excel | 3 | 18.11.2010 09:16 |
Запись данных в ячейку | orkus | Помощь студентам | 15 | 30.03.2010 16:15 |
запись двух функций в одну ячейку (ВПР+ЕСЛИОШИБКА) | grichanuk | Microsoft Office Excel | 2 | 17.11.2009 14:46 |
Запись числа типа инт в ячейку двумерного массива типа char | AxenicX | Помощь студентам | 1 | 25.09.2009 00:35 |