Страницы: 1
RSS
Сортировка Excel не различает "И" и "Й" в тексте
 
В ячейках коды (текстовые значения) типа
ИN
ЙQ
ЙD
ИF
ИZ
ЙG
После сортировки они располагаются так:
ЙD
ИF
ЙG
ИN
ЙQ
ИZ
Хотя надо, чтоб сначала шли все коды с И, затем с Й.

Просто по одной букве И и Й сортировка правильная - начала И, затем Й. Такая же проблема с Е и Ё.
То, что не учитываются в сортировке некоторые символы (напр., дефис), тоже напрягает.

У кого-то есть идеи, как отсортировать таблицу с подобными значениями нормально по алфавиту?

Создать свой список не получится, т.к. на самом деле значения не двухсимвольные, а гораздо больше. И повлиять на текст кода тоже абсолютно никак нельзя, т.к. эти коды генерятся в другой программе по своему какому-то алгоритму.

Можно с VBA. С VBA тоже в этом смысле проблемы, т.к. при сортировке надо различать И и Й, но не различать заглавные и прописные буквы. Это решил доп.процедурой в другом модуле с Option Compare Binary.
А самое главное, что таблица большая и столбцов сортировки несколько - Excel с сортировкой VBA зависает надолго. К тому же все процедуры сортировки, взятые с этого и других сайтов, страдают одним нехорошим свойством: при одинаковых значениях сам Excel располагает на листе строки в той последовательности, что были раньше, а макросы эти строки перемешивают, что совершенно не нужно.
Да и не каждый пользователь способен запустить нужный макрос в нужный момент.
 
Цитата
надо, чтоб сначала шли все коды с И, затем с Й.
Проверил: именно так и сортирует.
 
Нормально сортирует:
ИF
ИN
ИZ
ЙD
ЙG
ЙQ
Уточните, в какой версии Excel сортирует неправильно?
И какая языковая локализация Office и операционной системы?
Изменено: ZVI - 03.11.2019 00:58:26
 
Проверял:
1. Excel2007 под Win7 (32 разр)
2. Excel2010 (32) под WinServ2008 (64)
3. Excel2003 под WinServ2008 (64)
Все РУС. Везде нет различия И и Й.
Изменено: tolikt - 03.11.2019 04:57:25 (Добавление файла для примера)
 
W7/32 Of2010 - не различает
 
У меня русская Windows 10 Pro 64 бит, и в Excel 2010 32 бит, и в Excel 2016 64бит сортируется корректно.
Проверил в Win XP SP3 - сортировка правильная в Excel 2003, 2007, 2010 - все 32 битные.
Но у меня для исключения кракозябр (русификации) файл C_1252.NLS в указанных операционных системах заменен на C_1251.NLS , может, в этом отличие, хотя вряд ли.
Изменено: ZVI - 03.11.2019 11:39:30
 
Здравствуйте, коллеги!
Правила сортировки текстов в системах Microsoft описаны здесь. Важно подчеркнуть, что одни и те же символы Unicode при различных региональных настройках могут сортироваться по-разному. Подробно про это написано в соответствующем стандарте Unicode.
В русском языке буква И должна при сортировке быть раньше буквы Й, буквы Е и Ё имеют одинаковый приоритет для сортировки (что объяснимо, поскольку правила русского языка рекомендуют в печатных текстах употреблять вместо буквы Ё  букву E, кроме специальных случаев).

Проверил сортировку И и Й на разных системах.

На системах с кодовой страницей по умолчанию Windows-1251 результаты следующие.
Win XP, Excel 2003, 2007, Win 10 Excel 2016 (32-) сортировка правильная.

Win 7 Excel 2007, Excel 2010 (32-) сортировка не правильная (такая, как в #1). Одна из версий - после обновления Win 7 (Windows-1251) в августе 2019, похоже, начались какие-то проблемы. В частности, конструкция Array() в VBA стала приводить к ошибкам.

Для системы Win 10 с кодовой страницей Windows-1252 (en), Excel 2016 (64-) сортировка такая, как в #1.

Можно при необходимости написать макрос для сортировки диапазонов ячеек, результаты которого для текстов на русском языке не будут записеть от региональных настроек (и при этом при необходимости разделить буквы Е и Ё). Подходы к этому обсуждались здесь.
Изменено: sokol92 - 03.11.2019 18:02:02
Владимир
 
Забыл указать свои параметры: Windows 10 (64), Exzcel 2013 (32).
 
Цитата
sokol92 написал:
после обновления Win 7 (Windows-1251) в августе 2019
Есть у меня ощущение, что на момент обсуждения не правильной сортировки буквы "Ё", буква "Й" сортировалась правильно. Хотя, ни подтвердить, ни опровергнуть сие не могу. Да и обновления вроде как отключены.
И
Цитата
ZVI написал:
файл C_1252.NLS в указанных операционных системах заменен на C_1251.NLS
тоже присутствует.
 
На упомянутых в #8 системах замены 1252->1251 нет.
Владимир
Страницы: 1
Наверх