Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 78

Словосочитания из словаря заменить на соответствующие им сокращения

17.06.2013, 20:53. Показов 2948. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Форумчане, здравствуйте! Нужен макрос, который будет из одной колонки Excel'я брать текст, сканировать его на словосочитания из словаря(отдельна таблица в 2 столбика) и заменять эти словосочитания на аббривеатуры и сокращения из словаря. Помогите пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.06.2013, 20:53
Ответы с готовыми решениями:

Сокращения кода с использованием словаря
Нужна большая помощь в сокращения кода слишком много текста public void users_auth_Load(object sender, EventArgs e) { ...

Заменить знаки препинания, на сокращения
Здравствуйте, написал программу, которая должна менять знак "." на слово "тчк" в массиве, но программа не работает. Подскажите пожалуйста,...

Робота со строками. (заменить сокращения на полный текст)
как решить задачу ; Задан русскоязычный текст,в котором есть сокращения (т.к , др. , и.т.п.).Нужно заменить эти сокращения на полный...

17
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
17.06.2013, 22:23
Чтоб быстро - вот словарь и используйте. Поищите "scripting.dictionary"
1
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 78
17.06.2013, 22:25  [ТС]
Спасибо, поищу.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
17.06.2013, 22:33
Показали бы файл - может уже и код был бы. А так ждите экстрасенсов неленивых, кто Ваш файл за Вас сделает.
1
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 78
17.06.2013, 22:46  [ТС]
Фот пример файла. Загвоздка в том, что сокращать нужно сначала по словосочитаниям, а затем, если таковых соответствий нет, по одиночным словам. В первом листе идентификатор и длинные имена. Во втором только идентификатор, в третьем - сам словарь, на который ориентироваться. Нужно сократить имя по словарю(это маленький пример, мне нужен ко для того, чтобы затем добить большой словарь и таблица с множеством значений, это я сделаю сам. Прошу помочь только с кодом, смысл которого искать сначала словосочитания, затем слова в ячейках столбца А1 листа Исходник, затем вставлять короткие именя в столбец б листа 2, сообтветствуя идентификатору, руководствуясь словарем. Если будете ограничивать словарь, сделайте пожалуйста около 5000 значий, чтобы можно было смело добавлять.
Вложения
Тип файла: xlsx Заменить.xlsx (8.7 Кб, 7 просмотров)
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
17.06.2013, 22:48
А король то голый! (с)
Т.е. файл пустой.
0
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 78
17.06.2013, 22:52  [ТС]
Странно, у меня тоже, хотя слделал - сохранил. Сейчас, пару минут...
0
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 78
17.06.2013, 22:58  [ТС]
Вот. Все расписал)
Вложения
Тип файла: xlsx Заменить2.0.xlsx (9.9 Кб, 6 просмотров)
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
17.06.2013, 23:09
Не, преимущества словаря тут на первом этапе не работают - нужно перебором цикл в цикле искать и менять. Хотя можно вместо массива использовать словарь.
Но вот что потом делать с этими одинаковыми номерами? Просто допишите в первый лист шапку - второй лист выкиньте
1
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 78
17.06.2013, 23:12  [ТС]
А можно из поиска перебором букв сделать не слова, а словосочитания? А то код есть, от Вашего тезки, кстати. А может, и Ваш. Там словарь вбит как специальное поле Lingvo

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Function RowLingvo(txt As String) As String
Dim i As Integer, str As String, str2 As String, m As String
For i = 1 To Len(txt) ' пробегаем всю фразу по буквам
    m = Mid(txt, i, 1) ' берем очередную букву
    If m >= "А" And m <= "я" Then ' проверяем ее на кириллицу
        str2 = "" ' если кирилица то обнуляем слово
        Do ' запускаем цикл для определения очередного слова
            str2 = str2 & m 'приклеиваем к слову очередную буку
            i = i + 1 'накручиваем счетчик
            m = Mid(txt, i, 1) 'берем очередную букву
        Loop While m >= "А" And m <= "я" And i <= Len(txt) ' повторять пока слово не закончилось и не закончилась фраза
        i = i - 1 ' сбрасываем счетчик на 1
        
        If IsError(Application.VLookup(str2, Range("lingvo"), 2, 0)) Then ' проверяем слово на наличие в словаре
            str = str & str2 ' если слова нет, то не переводим
        Else
            str = str & Application.VLookup(str2, Range("lingvo"), 2, 0) ' переводим текущее слово
        End If
        
    Else
        str = str & m ' если символ не кириллица, то оставляем его без изминений
    End If
Next i ' следующая буква
RowLingvo = str ' возвращаем перевод
End Function
0
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 78
17.06.2013, 23:14  [ТС]
И сам файл, что же я так...
Вложения
Тип файла: xls row.xls (36.5 Кб, 7 просмотров)
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
17.06.2013, 23:28
Не, это не моё, не помню.
Всё ж прикрутил словарь, чтоб второй раз цикл в цикле не гнать.

P.S. А kürüşge demir,500ml помню... Иначе делал.
Вложения
Тип файла: rar Заменить3_0.rar (14.1 Кб, 18 просмотров)
1
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 78
17.06.2013, 23:46  [ТС]
Вы мне постоянно помогаете, можно вас как-то отблагодарить? Куда благодарные отзывы слать?

Добавлено через 9 минут
А этот макрос будет работать в другой книге, или туда тоже нужно будет словарь прикручивать?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
17.06.2013, 23:50
В другой такой же с тремя листами будет. Перетяните модуль мышью из проекта в проект и готово.
Кнопку тоже можно скопировать, затем по ПКМ поменять макрос.
Но данные должны быть так же в 2 столбца без пустых строк!
1
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 78
17.06.2013, 23:53  [ТС]
А если Sheets(1) поменять на Sheets("Лист25") к примеру, всё будет работать с большим количеством листов по названиям?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
18.06.2013, 00:00
Да, можно использовать названия.
1
2 / 2 / 0
Регистрация: 05.06.2013
Сообщений: 78
18.06.2013, 00:28  [ТС]
Спасибо большое, думаю, подстрою макрос к утру. Хочу сам всему научиться.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
18.06.2013, 00:38
Используйте окно Locals и пошаговый прогон кода - не придётся до утра сидеть
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2013, 00:38
Помогаю со студенческими работами здесь

Заменить сокращения на полные слова из файла с сокращениями
Доброго времени суток. Вот собственно задание: По символьным файлам с текстом ( содержащим сокращения ) и сокращениями создать новый...

Ввести строку. Заменить знаки препинания на сокращения ( '.' - тчк, ',' - зпт, '?' - впр, ':' - дтч )
Ввести строку. Заменить знаки препинания на сокращения ( '.' - тчк, ',' - зпт, '?' - впр, ':' - дтч )

Задается произвольный текст. В тексте заменить все ТЧК, ЗПТ и другие сокращения на соответ-ствующие им знаки препинания
Задается произвольный текст, содержащий не более 10 строк, в каждой строке не бо-лее 80 символов. В тексте заменить все ТЧК, ЗПТ и другие...

Заменить цифры на соответствующие слова
Задание таково-вести строчку, вывести ее, заменив цифры на соответствующие слова. Есть небольшая часть кода, но не знаю, как сделать, чтобы...

Заменить знаки препинания на соответствующие слова
Заменить знаки препинания на соответствующие слова С++ (работа с файлами)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru