Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/86: Рейтинг темы: голосов - 86, средняя оценка - 4.87
23 / 20 / 3
Регистрация: 12.08.2010
Сообщений: 206

Сравнение строк в Excel

17.02.2011, 18:55. Показов 16186. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Столкнулся с задачей, достаточно интересной, но в виду отсутствия у меня опыта работы со строками, очень для меня непростой.

Задача следующая: Есть, допустим, 500 сток текста, в которых хранятся адреса. Нужно проверить каждый из адресов на совпадения. Т.е. есть ли в таблице еще такие же адреса. Вся проблема заключается в том, что даже самые одинаковые адреса могут быть записаны по-разному.
Например:
"Москва, ул. Войковская, 26"
"город Москва, улица Войковская, дом 26"
ну и т.д.
Знающие люди, подскажите пожалуйста, верно ли я мыслю?

1) Считываем строку.
2) Разбиваем ее на слова, заменяя все идущие подряд НЕ буквы и/или НЕ цифры на пробел (можно еще оставить "-")
3) Полученную строку сохраняем в переменную. Пусть в strSeek
4) Теперь начинаем по очереди считывать строки для проверки.
5) Проделываем с каждой считанной строкой пункты 2-3 и сохраняем в strTemp
4) С помощью функции InStr(Text) сравниваем strSeek с strTemp
5) Если совпадений по словам 3+, то считаем адреса идентичными.
6) далее в strTemp следующий адрес..и далее далее. Там уже все понятно, и с обработкой это уже другая история.

Вот как-то так я себе это представляю.
Может быть есть какой-нибудь более деликатный способ? )
Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2011, 18:55
Ответы с готовыми решениями:

Сравнение строк в нескольких файлах excel, копирование несовпадающих строк и их вывод в сводный файл
Добрый день, только только начал разбираться с VBA в excel, поэтому прошу помощи (схожие темы находил, но не смог преобразовать их...

Сравнение строк в Excel
Проблема такая. Имею 3 файла: 1) Список сформированый из 1с; 2) Список сформированый в какой-то старой 1-се и редактировался в опен офисе;...

Сравнение строк в Excel на совпадение
Смысл такой: Товар на складе до ревизии Смысл такой: Товар на складе до ревизии Наименование Кол-во Цена Сумма Молоко 1 ...

32
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
18.02.2011, 19:36
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Bazzy Посмотреть сообщение
регулярки будут также эффективны как и Ваш вариант
Я с этим не согласен.
з.ы. понятно, что бутылки разные бывают, но тут же можно договориться)
0
23 / 20 / 3
Регистрация: 12.08.2010
Сообщений: 206
21.02.2011, 06:13  [ТС]
В общем...вот пример того, как можно сравнивать адреса.
Этот алгоритм далеко не совершенен, и естественно, что его можно (да наверное и нужно) оптимизировать в скорости. Плюс он еще не все адреса может проглотить.
Но в целом...это работает.
Кто там обещал проставиться?
Вложения
Тип файла: rar Книга1.rar (21.5 Кб, 212 просмотров)
2
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
03.03.2011, 17:17
Цитата Сообщение от half-node Посмотреть сообщение
В общем...вот пример того, как можно сравнивать адреса.
Этот алгоритм далеко не совершенен, и естественно, что его можно (да наверное и нужно) оптимизировать в скорости. Плюс он еще не все адреса может проглотить.
Но в целом...это работает.
Кто там обещал проставиться?
Я обещал проставиться за работающий алгоритм)
0
23 / 20 / 3
Регистрация: 12.08.2010
Сообщений: 206
03.03.2011, 18:47  [ТС]
Цитата Сообщение от analyst Посмотреть сообщение
Я обещал проставиться за работающий алгоритм)
Все нормально. Я не пью.
А вообще, все зависит только от того, сколько кто-либо готов потратить времени на внесение тех или иных правил.

Смысл спора, напомню, был такой: Мол - это невозможно.
Резюме - возможно.
0
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
03.03.2011, 20:29
Цитата Сообщение от half-node Посмотреть сообщение
Все нормально. Я не пью.
А вообще, все зависит только от того, сколько кто-либо готов потратить времени на внесение тех или иных правил.
Смысл спора, напомню, был такой: Мол - это невозможно.
Резюме - возможно.
Согласен. Но решение не будет лучше, чем мой вариант. Сколько вы представляете себе таких правил? Вариантов, которые вам могут выслать юзеры великое множество. Так что менять каждый раз программу под них - не очень хорошее программное решение.
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
04.03.2011, 05:01
Цитата Сообщение от half-node Посмотреть сообщение
Но в целом...это работает.
сравни два адреска
город армавир улица советская дом 10
город москва улица большая дом 10
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
05.03.2011, 23:59
вообще, программное решение проблемы возможно только двумя способами
-посредством Искусственного Интеллекта (который пока не изобретен)
-посредством экспертной системы имеющей в своем составе актуальную БД адресов.

однако, если не задаваться целью ПОЛНОЙ автоматизации - задачу можно эффективно решить простым способом.
все нормальные люди пишут адрес по одному и тому же шаблону: город ГОРОД улица УЛИЦА дом ДОМ. иногда, вместо, например, "улица" пишут "ул" или "ул.". следовательно, несложно распарсить большинство адресов, после чего их анализ не представляет трудностей.
остальные адреса придется проверять вручную. в этом компьютер тоже может помочь. например, специальный мастер будет выводить подозрительно похожие адреса. человек же будет подтверждать или отвергать информацию.
для такого мастера можно, для начала, использовать, хотя бы, и ваш алгоритм. по ходу эксплуатации можно будет внести в него некоторые усовершенствования для учета часто встречающихся случаев.
если данные поступают, в основном, от одних и тех же людей, есть смысл создать собственную БД адресов, тогда проблемы будут возникать только с появляющимися новыми адресами
0
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 6
29.09.2011, 17:36
half-node, доброго времени суток, думаю только Вы мне можете помочь. У меня проблема схожая с вашей с небольшим отличием: адреса располагаются в 2 столбцах попарно, нужно сравнить их и удалить одинаковые Пример.xls
0
23 / 20 / 3
Регистрация: 12.08.2010
Сообщений: 206
29.09.2011, 18:06  [ТС]
artemon_rus, если адреса идентичны, то проблем вообще никаких нет.
Цикл крутит левый столбец, вложенный в него цикл прокручивает правый столбец и сравнивает с текущим текстом основного цикла.
Если адреса могут отличаться, типа: Слева - г. Москва, ул. Войкова, а справа - Москва, Войкова ул., то тут да. Нужно ковырять в сторону регулярных выражений.
Если у Вас второй вариант, то отпишитесь здесь, я буду дома, скину в личку те достижения, которых я добился в данном вопросе.
1
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 6
30.09.2011, 10:15
Адреса могут отличаться (см. пример), причем в правом столбце адрес как правило более полный, сравнивать между собой нужно только адреса, расположенные в одной строке. В принципе достаточно даже стравнивать наименования улиц, но могут быть случаи, что в одном столбце наименование улицы будет, а в другом нет, тогда надо по другим признакам. Массив примерно 150000 строк. Спасибо.
Пример.xls
0
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 6
30.09.2011, 17:30
half-node, Адреса могут отличаться (см. пример), причем в правом столбце адрес как правило более полный, сравнивать между собой нужно только адреса, расположенные в одной строке. В принципе достаточно даже стравнивать наименования улиц, но могут быть случаи, что в одном столбце наименование улицы будет, а в другом нет, тогда надо по другим признакам. Массив примерно 150000 строк. Спасибо.

Примерно так .xls
0
1 / 1 / 0
Регистрация: 16.01.2014
Сообщений: 9
16.01.2014, 10:21
half-node, привет!
Удалось решить эту задачку? У меня вопрос есть - задача подобная, но намного легче.
0
16.01.2014, 10:28

Не по теме:

Kotaaa, Последняя активность пользователя half-node: 11.10.2013 02:58,
так что вряд ли стоит расчитывать на его оперативный ответ.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2014, 10:28

Как Excel документ, в котором 10000 строк, разбить по 10 строк и сохранить каждые 10 строк в отдельный файл
Здравствуйте. Подскажите как Excel документ в котором 10000 строк разбить по 10 строк и сохранить каждые 10 строк в отдельный файл. Нашел...

Сравнение строк в двух Excel-файлах
Доброго дня. Есть два файла Excel. Как сравнить строку одного файла со строкой другого файла и в зависимости от результата сравнения...

Функции работы со строками символов: определение размера строки, копирование строк, добавление строк, сравнение строк
На языке Ассемблер написать функции работы со строками символов: определение размера строки, копирование строк, добавление строк, сравнение...

Сравнение строк одной БД с другой либо как избавится от ненужных строк
Доброе время суток! Проблема состоит в следующем. Есть корпоративная БД (то есть структуру придумывал не я) в ней есть две таблицы P с...

Сравнение строк введенных в грид и строк из массива
У меня есть массив с строками.(максимальная длина строки 8 символов, минимальная длина 3 символа). Также есть stringgrid в который я...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru