Всем доброго времени суток! На тему сравнения и синхронизации списков написано повсюду уже не мало. Способы и алгоритмы есть разные. Предлагаю свой вариант. Для моих потребностей он подходит лучше других. Пробуйте, сравнивайте, выбирайте.
Всем доброго времени суток! На тему сравнения и синхронизации списков написано повсюду уже не мало. Способы и алгоритмы есть разные. Предлагаю свой вариант. Для моих потребностей он подходит лучше других. Пробуйте, сравнивайте, выбирайте.Формуляр
Безо всякого злого умысла. Чеснослово! Просто "исторически сложилось", был код для Workbook - к нему дописал сортировку, потом лишнее убрал - сортировка осталась. Логичнее уж на лист его упихать, а не в модуль, чтоб можно было не глядя внутрь, использовать лист в каком-то своём файле.
Безо всякого злого умысла. Чеснослово! Просто "исторически сложилось", был код для Workbook - к нему дописал сортировку, потом лишнее убрал - сортировка осталась. Логичнее уж на лист его упихать, а не в модуль, чтоб можно было не глядя внутрь, использовать лист в каком-то своём файле.Формуляр
Excel 2003 EN, 2013 EN
Сообщение отредактировал Формуляр - Четверг, 29.03.2012, 11:14
Решил попробовать, что будет, если использовать при сортировке функцию нечёткого сравнения строк. Допустимый уровень различия, при котором строки считаются одинаковыми, устанавливается в красной рамке сверху. Сравнение производится по триадам.
Обратите внимание: При нечётком сравнении игнорируются все небуквенные символы, слова, короче 3х букв, и различия в регистре. Даже если погрешность = 0%.
При высоких значениях допустимой погрешности результат сортировки может оказаться непредсказуем. Это связано с тем, что сначала выполняется стандартная процедура сортировки, а уже потом нечёткое сравнение списков между собой. При высокой погрешности одно может противоречить другому.
Решил попробовать, что будет, если использовать при сортировке функцию нечёткого сравнения строк. Допустимый уровень различия, при котором строки считаются одинаковыми, устанавливается в красной рамке сверху. Сравнение производится по триадам.
Обратите внимание: При нечётком сравнении игнорируются все небуквенные символы, слова, короче 3х букв, и различия в регистре. Даже если погрешность = 0%.
При высоких значениях допустимой погрешности результат сортировки может оказаться непредсказуем. Это связано с тем, что сначала выполняется стандартная процедура сортировки, а уже потом нечёткое сравнение списков между собой. При высокой погрешности одно может противоречить другому.
Саш, привет! Очень интересно посмотреть, но дома не могу: мелких делишек накопилось - всю плешь проели А на работе небольшой завал. Наверное, посмотреть смогу только в понедельник в обеденный перерыв. Придётся мне потерпеть...
Что-то у нас Володя - v__step куда-то совсем заработался и пропал. Надо бы его с регэкспами привлечь тему покрутить. Напишу, наверное, ему в личку, спрошу как дела...
Саш, привет! Очень интересно посмотреть, но дома не могу: мелких делишек накопилось - всю плешь проели А на работе небольшой завал. Наверное, посмотреть смогу только в понедельник в обеденный перерыв. Придётся мне потерпеть...
Что-то у нас Володя - v__step куда-то совсем заработался и пропал. Надо бы его с регэкспами привлечь тему покрутить. Напишу, наверное, ему в личку, спрошу как дела...Alex_ST
Привет Лёша! Ну ты сильно не переживай. Особо радужных надежд я на этот эксперимент не возлагал изначально. Заранее понятно, что применимость этой штуки сильно ограничена, ибо заложено в ней противоречие между предварительной стд. сортировкой, которая чувствительна к месту символа в строке, и последующим нечётким сравнением, которому всё равно. Чтобы добиться устойчивой работы придётся разработать собственный принцип сортировки, конгруэнтный процедуре нечёткого сравнения... Только пока не понятно, чего ради.
Привет Лёша! Ну ты сильно не переживай. Особо радужных надежд я на этот эксперимент не возлагал изначально. Заранее понятно, что применимость этой штуки сильно ограничена, ибо заложено в ней противоречие между предварительной стд. сортировкой, которая чувствительна к месту символа в строке, и последующим нечётким сравнением, которому всё равно. Чтобы добиться устойчивой работы придётся разработать собственный принцип сортировки, конгруэнтный процедуре нечёткого сравнения... Только пока не понятно, чего ради.Формуляр
Формуляр, извините, пожалуйста за мое непонимание. но как пользоваться макросом. вот у меня есть два списка , мне надо в сравнить данные в них между собой и выделить совпавшие. можно это сделать с помощью подобного макроса???
Формуляр, извините, пожалуйста за мое непонимание. но как пользоваться макросом. вот у меня есть два списка , мне надо в сравнить данные в них между собой и выделить совпавшие. можно это сделать с помощью подобного макроса???Sharleez
Sharleez, берёте файл ParaSort2.xls (или лист из него) Копируете в него свои списки (в соседние столбцы) Выбираете любую ячейку списка и давите на кнопку Фильтруете пустые строки в обоих списках
Sharleez, берёте файл ParaSort2.xls (или лист из него) Копируете в него свои списки (в соседние столбцы) Выбираете любую ячейку списка и давите на кнопку Фильтруете пустые строки в обоих спискахФормуляр
Excel 2003 EN, 2013 EN
Сообщение отредактировал Формуляр - Четверг, 25.10.2012, 10:17
Саш, привет. Код интересный. Недавно было нужно отсортировать два списка, а о нём не вспомнил... Хорошо хоть списков было всего два и по 20-30 наименований. А объясни мне, к стати, в чём кайф создавать модуль класса только для того, чтобы объявить в нём [vba]
Код
Public value As Variant Public index As Long
[/vba]да ещё при этом ремарка на Public value работать коду не мешает, т.е. переменная явно лишняя? ----------------------------- Ну и ещё, конечно, хоть процедура и работает, но совсем не способствует читабельности кода обзывание переменных теми же именами, которые имеют стандартные свойства многих объектов модели... Да и размещение процедуры в модуле листа вместо стандартного затрудняет его интеграцию в Personal или надстройку.
Саш, привет. Код интересный. Недавно было нужно отсортировать два списка, а о нём не вспомнил... Хорошо хоть списков было всего два и по 20-30 наименований. А объясни мне, к стати, в чём кайф создавать модуль класса только для того, чтобы объявить в нём [vba]
Код
Public value As Variant Public index As Long
[/vba]да ещё при этом ремарка на Public value работать коду не мешает, т.е. переменная явно лишняя? ----------------------------- Ну и ещё, конечно, хоть процедура и работает, но совсем не способствует читабельности кода обзывание переменных теми же именами, которые имеют стандартные свойства многих объектов модели... Да и размещение процедуры в модуле листа вместо стандартного затрудняет его интеграцию в Personal или надстройку.Alex_ST
А объясни мне, к стати, в чём кайф создавать модуль класса только для того, чтобы объявить в нём
не очень помню уже подробности, но смысл был в том, чтобы получить конкретный порядковый индекс каждого элемента Collection (который тот, вроде, не поддерживает). Может, я чего и недотумкал тут. Может, надо было какой другой класс вместо Collection взять...
Да и размещение процедуры в модуле листа вместо стандартного затрудняет его интеграцию в Personal или надстройку.
Ну, не расчитывал, на такую постоянную востребованность. Для эпизодического использования, проще 1 лист в нужный файл перетащить. А для людей, подключающих макросы через Personal, скопировать текст кода, уверен, проблемой не будет.
А объясни мне, к стати, в чём кайф создавать модуль класса только для того, чтобы объявить в нём
не очень помню уже подробности, но смысл был в том, чтобы получить конкретный порядковый индекс каждого элемента Collection (который тот, вроде, не поддерживает). Может, я чего и недотумкал тут. Может, надо было какой другой класс вместо Collection взять...
Да и размещение процедуры в модуле листа вместо стандартного затрудняет его интеграцию в Personal или надстройку.
Ну, не расчитывал, на такую постоянную востребованность. Для эпизодического использования, проще 1 лист в нужный файл перетащить. А для людей, подключающих макросы через Personal, скопировать текст кода, уверен, проблемой не будет. Формуляр
Excel 2003 EN, 2013 EN
Сообщение отредактировал Формуляр - Пятница, 07.11.2014, 11:01
Добрый день друзья , зарание извиняюсь если пишу не там или не в тему я новичок на форуме и у меня вопрос по сортировке данных помогите пожалуста решить проблему. есть два файла которые нужно объединить исходя из совпадения имени и фамилия файл 1 является экстрактом из Word и поэтому в таблице B помимо имени есть еще информация , но мне нужно сортировать два файла исходя именно из этих имен. зарание спасибо [p.s.]так как размеры файлов несколько велики их невозможно прикрепить здесь ,вут линк на скачивание[/p.s.] Удалено администрацией. Нарушение Правил форума [moder]Читаем Правила форума создаём свою тему в соответствующем разделе, прикладываем НЕБОЛЬШОЙ файл-пример[/moder]
Добрый день друзья , зарание извиняюсь если пишу не там или не в тему я новичок на форуме и у меня вопрос по сортировке данных помогите пожалуста решить проблему. есть два файла которые нужно объединить исходя из совпадения имени и фамилия файл 1 является экстрактом из Word и поэтому в таблице B помимо имени есть еще информация , но мне нужно сортировать два файла исходя именно из этих имен. зарание спасибо [p.s.]так как размеры файлов несколько велики их невозможно прикрепить здесь ,вут линк на скачивание[/p.s.] Удалено администрацией. Нарушение Правил форума [moder]Читаем Правила форума создаём свою тему в соответствующем разделе, прикладываем НЕБОЛЬШОЙ файл-пример[/moder]SBRoot
Сообщение отредактировал Pelena - Вторник, 19.05.2015, 20:16