Добрый день, форумчане. Очень надеюсь на вашу помощь. суть проблемы такова: есть файл с индексами типа ХХХ-ХХХ-ХХХ. нужно отсортировать эти индексы по возрастанию, и по алфавиту. Есть похожая тема http://www.excelworld.ru/forum/2-7354-1 , но в моей ситуации разница в том, что есть разделители. и необходимо отсортировать с учетом этих разделителей (т.е. вначале с наименьшим кол-вом). Можно ли как-нибудь это реализовать с помощью макроса или формулы (хотя , мне кажется, формула будет просто гигантской).
Добрый день, форумчане. Очень надеюсь на вашу помощь. суть проблемы такова: есть файл с индексами типа ХХХ-ХХХ-ХХХ. нужно отсортировать эти индексы по возрастанию, и по алфавиту. Есть похожая тема http://www.excelworld.ru/forum/2-7354-1 , но в моей ситуации разница в том, что есть разделители. и необходимо отсортировать с учетом этих разделителей (т.е. вначале с наименьшим кол-вом). Можно ли как-нибудь это реализовать с помощью макроса или формулы (хотя , мне кажется, формула будет просто гигантской).kefirrr
Немного непонятна логика самой сортировки... Почему у вас 6-2ПУ > 6-1СС - по числу 2? тогда почему 6-2ПУ > 6-15Я ? И почему П-350 > 4П-184 ? Приведите более содержательный пример или полное описание порядка сортировки.
В любом случае, макросом сделать ключ для сортировки, с помощью регэкспов, - достаточно легко.
Немного непонятна логика самой сортировки... Почему у вас 6-2ПУ > 6-1СС - по числу 2? тогда почему 6-2ПУ > 6-15Я ? И почему П-350 > 4П-184 ? Приведите более содержательный пример или полное описание порядка сортировки.
В любом случае, макросом сделать ключ для сортировки, с помощью регэкспов, - достаточно легко.AndreTM
Добрый день. Сначала идут все индексы с 1 тире. И они подчиняются следующему: сначала цыфры, потом буквы. Поэтому и 4П-184 идет ранее нежели П-350 тоже самое и с 6-2ПУ, 6-1СС (Здесь Вы правы, я недосмотрела). Сортировка сначала идет по 6, затем сортирует символы после "-". Т.Е. сначала идет 1СС, затем 2ПУ, и как вы правильно заметили, должно идти 6-2ПУ и затем 6-15Я
Что значит "ключ" для сортировки, и "регэспы" ?
Прикрепляю файл, где приведены мои начинания в этом направлении. Я опиралась следующему алгоритму: 1) Определить кол-во "-", для понимания того, какие индексы должны стоять сначала 2) разделяла индекс на столбцы (разделителем был знак - ) '---------------- дальше работала только с индексами с 1 тире 3) сортирую первую часть по алфавиту, переписываю заново индекс, чтобы не потерять данные (применяя формулу из вышеупомянутой схожей темы) 4) сортирую 2-ю часть индекса
На этом пока остановилась, Потому что окончательно запуталась.
Добрый день. Сначала идут все индексы с 1 тире. И они подчиняются следующему: сначала цыфры, потом буквы. Поэтому и 4П-184 идет ранее нежели П-350 тоже самое и с 6-2ПУ, 6-1СС (Здесь Вы правы, я недосмотрела). Сортировка сначала идет по 6, затем сортирует символы после "-". Т.Е. сначала идет 1СС, затем 2ПУ, и как вы правильно заметили, должно идти 6-2ПУ и затем 6-15Я
Что значит "ключ" для сортировки, и "регэспы" ?
Прикрепляю файл, где приведены мои начинания в этом направлении. Я опиралась следующему алгоритму: 1) Определить кол-во "-", для понимания того, какие индексы должны стоять сначала 2) разделяла индекс на столбцы (разделителем был знак - ) '---------------- дальше работала только с индексами с 1 тире 3) сортирую первую часть по алфавиту, переписываю заново индекс, чтобы не потерять данные (применяя формулу из вышеупомянутой схожей темы) 4) сортирую 2-ю часть индекса
На этом пока остановилась, Потому что окончательно запуталась. kefirrr
Ага... Все равно немного непонятно, но хоть что-то.
Посмотрите пример. Реализовано с помощью макросов, проделывающих те самые действия, что вам требуются. И, прежде чем задавать вопросы - попробуйте все же хоть немного понять, что там происходит.
P.S. Естественно, можно не выгружать "ключ сортировки" в явном виде на лист, а, создав его, сразу отсортировать и вернуть пользователю только сами исходные данные...
Ага... Все равно немного непонятно, но хоть что-то.
Посмотрите пример. Реализовано с помощью макросов, проделывающих те самые действия, что вам требуются. И, прежде чем задавать вопросы - попробуйте все же хоть немного понять, что там происходит.
P.S. Естественно, можно не выгружать "ключ сортировки" в явном виде на лист, а, создав его, сразу отсортировать и вернуть пользователю только сами исходные данные...AndreTM
AndreTM. ОГРОМНОЕ СПАСИБО! Работает. Я в начале пути познавания VBA, поэтому код я Ваш не поняла (у Вас все расписано, просто я раньше с этими командами не встречалась). Попробую вникнуть.
Небольшая просьба, а можно сделать так, чтобы индексы с 1 разделителем сортировались по такому же принципу как и с 2 разделителями (т.е. 1УК и 12 УК стояли рядом, и тоже самое для П-350, П-351, П-352, 4П-184 ). Или направьте в нужное русло по вашему коду, а то без знаний принципа работы той или иной функции буду долго разбираться
AndreTM. ОГРОМНОЕ СПАСИБО! Работает. Я в начале пути познавания VBA, поэтому код я Ваш не поняла (у Вас все расписано, просто я раньше с этими командами не встречалась). Попробую вникнуть.
Небольшая просьба, а можно сделать так, чтобы индексы с 1 разделителем сортировались по такому же принципу как и с 2 разделителями (т.е. 1УК и 12 УК стояли рядом, и тоже самое для П-350, П-351, П-352, 4П-184 ). Или направьте в нужное русло по вашему коду, а то без знаний принципа работы той или иной функции буду долго разбираться kefirrr
направьте в нужное русло по вашему коду, а то без знаний принципа работы той или иной функции буду долго разбираться
Какие принципы работы? Для каждой функции есть хелп и гугл, куда ещё дальше направлять-то? А код там настолько же прост (ну, что я могу поделать-то? прост ведь...), насколько сложно его объяснить словами [offtop]Ну вот... представьте себе стакан. ВСЕ видели стакан. А также обоняли, осязали и лизали. А теперь попробуйте объяснить простыми словами, что такое "стакан", если у вас его нет, но вы давно привыкли им пользоваться. Причем объяснить тому, кто не хочет видеть, слышать и т.д.[/offtop]
направьте в нужное русло по вашему коду, а то без знаний принципа работы той или иной функции буду долго разбираться
Какие принципы работы? Для каждой функции есть хелп и гугл, куда ещё дальше направлять-то? А код там настолько же прост (ну, что я могу поделать-то? прост ведь...), насколько сложно его объяснить словами [offtop]Ну вот... представьте себе стакан. ВСЕ видели стакан. А также обоняли, осязали и лизали. А теперь попробуйте объяснить простыми словами, что такое "стакан", если у вас его нет, но вы давно привыкли им пользоваться. Причем объяснить тому, кто не хочет видеть, слышать и т.д.[/offtop]AndreTM
Skype: andre.tm.007 Donate: Qiwi: 9517375010
Сообщение отредактировал AndreTM - Пятница, 10.10.2014, 01:54
Признаюсь честно, мозги маленько закипели от попытки понимания кода.. НО... не без результатно а это очень радует. Разобралась, конечно не до конца, но зато узнала про регулярные выражения.
ЗА ЧТО ВАМ ВСЕМ ОГРОМНОЕ СПАСИБО.
подкорректировала немножко Ваш код, чтобы получить данные для своей сортировки
Признаюсь честно, мозги маленько закипели от попытки понимания кода.. НО... не без результатно а это очень радует. Разобралась, конечно не до конца, но зато узнала про регулярные выражения.
ЗА ЧТО ВАМ ВСЕМ ОГРОМНОЕ СПАСИБО.
подкорректировала немножко Ваш код, чтобы получить данные для своей сортировкиkefirrr