Здравствуйте. Для сайта Википедия нужен скрипт. Требуется около 100 фамилий биатлонистов "переделать" с латиницы (и не только) на кириллицу. Нужно именно по принципу:
Martin Fourcade - Мартен Фуркад Björn Ferry - Бьёрн Ферри Ole Einar Bjørndalen - Уле-Эйнар Бьёрндален
Вдобавок, в зависимости от гонки фамилии могут меняться местами.
Т.е. нужно что-то вроде массовой замены "Найти" и "Заменить на".
У кого-нибудь есть идеи? Спасибо :))
Здравствуйте. Для сайта Википедия нужен скрипт. Требуется около 100 фамилий биатлонистов "переделать" с латиницы (и не только) на кириллицу. Нужно именно по принципу:
Martin Fourcade - Мартен Фуркад Björn Ferry - Бьёрн Ферри Ole Einar Bjørndalen - Уле-Эйнар Бьёрндален
Вдобавок, в зависимости от гонки фамилии могут меняться местами.
Т.е. нужно что-то вроде массовой замены "Найти" и "Заменить на".
Ой, СПАСИБО за оперативность. Уже РЕШИЛ проблему. Просто думал, что у меня уникально-сложная ситуация. Оказалось всё просто - ответы с этой темы натолкнули меня на идеи, и вот здесь моя проблема решена:
Создаём Excel-документ. В документе создаём "вторую книгу". Во второй книге, в столбце "А" прописываем фамилии на языке-оригинале. В столбце "B" прописываем фамилии так, как хотим их видеть на русском. Копируем фамилии из pdf-документа с результатами гонок, вставляем в "первую книгу" документа, создаём и запускаем нижеследующий макрос:
[vba]
Код
Sub Translate() Dim cell1 as Range, cell2 As Range Dim i as Long, Langs As Long
Langs = 3 'количество языков перевода, включая русский
For Each cell1 In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants) For Each cell2 In Worksheets("Словарь").Cells.SpecialCells(xlCellTypeConstants) If cell1.Value = cell2.Value Then i = cell2.Column If i = Langs Then i = 1 Else i = i + 1 cell1.Value = Worksheets("Словарь").Cells(cell2.Row, i).Value GoTo 1 End If Next cell2 1: Next cell1
End Sub
[/vba]
Ой, СПАСИБО за оперативность. Уже РЕШИЛ проблему. Просто думал, что у меня уникально-сложная ситуация. Оказалось всё просто - ответы с этой темы натолкнули меня на идеи, и вот здесь моя проблема решена:
Создаём Excel-документ. В документе создаём "вторую книгу". Во второй книге, в столбце "А" прописываем фамилии на языке-оригинале. В столбце "B" прописываем фамилии так, как хотим их видеть на русском. Копируем фамилии из pdf-документа с результатами гонок, вставляем в "первую книгу" документа, создаём и запускаем нижеследующий макрос:
[vba]
Код
Sub Translate() Dim cell1 as Range, cell2 As Range Dim i as Long, Langs As Long
Langs = 3 'количество языков перевода, включая русский
For Each cell1 In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants) For Each cell2 In Worksheets("Словарь").Cells.SpecialCells(xlCellTypeConstants) If cell1.Value = cell2.Value Then i = cell2.Column If i = Langs Then i = 1 Else i = i + 1 cell1.Value = Worksheets("Словарь").Cells(cell2.Row, i).Value GoTo 1 End If Next cell2 1: Next cell1
И позвольте ещё помощь. Я просто в Макросах Excel, на ДАННЫЙ МОМЕНТ, вообще не понимаю. Однако добрые дела делать хочется, например, для Википедии. Там реально люди тратят по 2 часа, чтобы ВРУЧНУЮ набрать результаты ОДНОЙ ГОНКИ. Используя Макросы Excel эту же задачу можно решить за 5-10 минут.
Как улучшить вышеуказанный скрипт для следующей базовой цели: Есть excel-документ. В нём 4 листа ("Лист1", "Мужчины", "Женщины", "Флаги"). На Лист1 я ввёл фамилию биатлонистки "CHEVALIER ANAIS". Нужно, чтобы Макрос видел эту фамилию при том, что "База данных" с этой фамилией расположена на третьем листе (т.е. на листе "Женщины").
И 2 коротких вопроса:
1. Как увеличить у Макроса "зону просмотра столбцов" ?? Т.е. этот Макрос "просматривает" только 3 столбца на листе "Словарь" и потом возвращаеться к 1-му столбцу этого же листа. Нужно, чтобы "просматривал" хотя бы 5 столбцов, И НЕ возвращался к 1-му столбцу
2. Что будет, если убрать из макроса строчку: Langs = 3 'количество языков перевода, включая русский Бывает, что при "переводе" языков распознования будет 1 (английский), или до 5 (англ, русский, французский, немецкий, норвежский).
И позвольте ещё помощь. Я просто в Макросах Excel, на ДАННЫЙ МОМЕНТ, вообще не понимаю. Однако добрые дела делать хочется, например, для Википедии. Там реально люди тратят по 2 часа, чтобы ВРУЧНУЮ набрать результаты ОДНОЙ ГОНКИ. Используя Макросы Excel эту же задачу можно решить за 5-10 минут.
Как улучшить вышеуказанный скрипт для следующей базовой цели: Есть excel-документ. В нём 4 листа ("Лист1", "Мужчины", "Женщины", "Флаги"). На Лист1 я ввёл фамилию биатлонистки "CHEVALIER ANAIS". Нужно, чтобы Макрос видел эту фамилию при том, что "База данных" с этой фамилией расположена на третьем листе (т.е. на листе "Женщины").
И 2 коротких вопроса:
1. Как увеличить у Макроса "зону просмотра столбцов" ?? Т.е. этот Макрос "просматривает" только 3 столбца на листе "Словарь" и потом возвращаеться к 1-му столбцу этого же листа. Нужно, чтобы "просматривал" хотя бы 5 столбцов, И НЕ возвращался к 1-му столбцу
2. Что будет, если убрать из макроса строчку: Langs = 3 'количество языков перевода, включая русский Бывает, что при "переводе" языков распознования будет 1 (английский), или до 5 (англ, русский, французский, немецкий, норвежский).dimakdd
Вот пример. Excel-документ. В нём 3 листа под названиями: Лист 0, Men, Women. На Лист 0 ввожу BABIKOV ANTON. Используя текущую версию скрипта получаю на "листе 0" - BABIKOV Anton. Т.е. скрипт просматривает лист "Men" и когда видит ТОЧНОЕ совпадение BABIKOV ANTON, то на "листе 0" заменяет значение ячейки на значение ближайшей правой ячейки на листе "Men". ЭТО ОТЛИЧНО.
Однако когда на "листе 0" ввожу AKIMOVA TATIANA, исполняю скрипт, ничего не происходит. Т.к. ячейка с содержанием AKIMOVA TATIANA расположена на листе "Women", который сприпт не видит.
Т.е. как сделать так, чтобы скрипт "просматривал" ВСЕ листы, которые созданы в Excel-документе ??
Вот пример. Excel-документ. В нём 3 листа под названиями: Лист 0, Men, Women. На Лист 0 ввожу BABIKOV ANTON. Используя текущую версию скрипта получаю на "листе 0" - BABIKOV Anton. Т.е. скрипт просматривает лист "Men" и когда видит ТОЧНОЕ совпадение BABIKOV ANTON, то на "листе 0" заменяет значение ячейки на значение ближайшей правой ячейки на листе "Men". ЭТО ОТЛИЧНО.
Однако когда на "листе 0" ввожу AKIMOVA TATIANA, исполняю скрипт, ничего не происходит. Т.к. ячейка с содержанием AKIMOVA TATIANA расположена на листе "Women", который сприпт не видит.
Т.е. как сделать так, чтобы скрипт "просматривал" ВСЕ листы, которые созданы в Excel-документе ??dimakdd