Возможна ли сортировка по более чем трем условиям?

Автор koskos, 26 января 2015, 17:51

0 Пользователи и 1 гость просматривают эту тему.

koskos

С удивлением для себя обнаружил, что в Excel сортируется по бОльшему числу условий.
Неужели в Calc больше трех нельзя?

tagezi

(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha

koskos

Цитата: tagezi от 26 января 2015, 16:17ЧЯДН?
Это Вы в LibreOffice?
А в Apache OpenOffice.org только три по умолчанию, а этого очень мало :(.

tagezi

Цитата: koskos от 26 января 2015, 15:27А в Apache OpenOffice.org только три по умолчанию, а этого очень мало .
Да, это LO. Но в нём по умолчанию тоже только 3. Дополнительные появляются тогда, когда вы израсходовали предыдущие. Вы точно попробовали, или пошли сразу спрашивать?
(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha

koskos


kompilainenn

в ЛО только недавно появилась возможность сортировать по болеем, чем трем условиям
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

tagezi

Цитата: kompilainenn от 26 января 2015, 18:57
в ЛО только недавно появилась возможность сортировать по болеем, чем трем условиям
Ну, я не спорю, я вообще очень редко использую сортировку более чем по 2 диапазонам.
И потом, всегда можно решить этот вопрос, если очень нужно, через формы и макросы.
(x86_64) Kubuntu 16.04.3 - LibreOffice 6.0.2 / 6.1 alpha

Rafik

Цитата: tagezi от 26 января 2015, 17:04И потом, всегда можно решить этот вопрос, если очень нужно, через формы и макросы.
Макрос сортирует только по трём столбцам! Проверено на LO 5.1.2.2 под Windows.
Тестовый файл прилагается.
Кто может подсказать какую версию надо поставить, чтобы макрос сортировал хотя бы по 4 столбцам и не было падения при попытке сохранения документа под другим именем? Падение при сохранении из макроса наблюдалось в версиях 4.4.х по 5.0.х

rami

Цитата: Rafik от  4 октября 2016, 08:00Макрос сортирует только по трём столбцам! Проверено на LO 5.1.2.2 под Windows.
Скорей всего это бага.
У дескриптора сортировки есть свойство для чтения MaxSortFieldsCount, которое даже в случае изменения в макросе ни на что не влияет, но если в диалоговом окне сортировки установить больше трёх полей сортировки для диапазона, то и в макросе MaxSortFieldsCount будет больше трёх.
Цитата: Rafik от  4 октября 2016, 08:00Кто может подсказать какую версию надо поставить, чтобы макрос сортировал хотя бы по 4 столбцам и не было падения при попытке сохранения документа под другим именем? Падение при сохранении из макроса наблюдалось в версиях 4.4.х по 5.0.х
В образце нечему падать, но если в оригинальном документе есть объединённые ячейки или формулы массивов или что-то ещё..., может и упасть :o

Rafik

Насчет падения. Это не в этом файле. Раньше, в версиях 4.4.х по 5.0.х была такая ерунда: при попытке сохранить открытый документ под другим именем LO падало. Падение происходило при выполнении примерно такой процедуры  Sub save1(oDoc As object,cFileName As string)
' cFileName - полное имя с путями
oUrl_1 = convertToURL(cFileName)
' Сохраняем под новым именем
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = oDoc.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
' Сохранение
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = oUrl_1
args1(1).Name = "FilterName"
args1(1).Value = "calc8"
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
End Sub

rami

Если cFileName существует, то "сохранить как" может вылететь, два файла с одним и тем же полным именем не могут быть.

Rafik

#11
Цитата: rami от  4 октября 2016, 15:45
Если cFileName существует, то "сохранить как" может вылететь, два файла с одним и тем же полным именем не могут быть.
Вылет наблюдался даже в том случае, когда файл с таким же именем не существует. В версиях, начиная с 5.1.х, пофиксили, но боюсь как бы этот баг опять не вернулся. В версии 3.5 падений не было и до появления версии 5.2.2 сидел под 3.5.1

JohnSUN

Цитата: tagezi от 26 января 2015, 18:17
ЧЯДН?
А провернуть этот же трюк с файлом, который Rafik показал, пробовал? Работает? У меня, например, на исходном файле "5 мг №120" постоянно оставался выше "1.75 мг №120" и "3.5 мг №120". И это хоть макросом сортируй, хоть руками... Я уж было готов был согласиться с rami, что это баг... Но внутренний голос упрямо зудел "Так не бывает!"

В общем, скопировал данные тестового диапазона в новую книгу - и ручная сортировка отработала на ура... То есть это - точно баг. Но, боюсь, не Либрин

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

kompilainenn

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: JohnSUN от  5 октября 2016, 05:56А провернуть этот же трюк с файлом, который Rafik показал, пробовал? Работает? У меня, например, на исходном файле "5 мг №120" постоянно оставался выше "1.75 мг №120" и "3.5 мг №120". И это хоть макросом сортируй, хоть руками... Я уж было готов был согласиться с rami, что это баг...
У меня вручную сортирует без проблем с самого начала. Багом я считаю, что свойство MaxSortFieldsCount можно изменить в макросе, но оно ни на что не влияет, а через диалог сортировки оно устанавливается и работает.

Цитата: JohnSUN от  5 октября 2016, 05:56В общем, скопировал данные тестового диапазона в новую книгу - и ручная сортировка отработала на ура...
Учти, что диапазон запоминает дескриптор сортировки, но после сохранения и нового открытия документа в дескрипторе остаются только первые три поля сортировки, а "лишние" сбрасываются — это всё недоделанная сортировка.