Удалить дубликаты

Автор kompilainenn, 8 сентября 2018, 12:18

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

kompilainenn

Цитата: JohnSUN от  8 сентября 2018, 21:05
Ну, давай рожать истину... В смысле - спорить
Цитата: kompilainenn от  8 сентября 2018, 15:18
>уточнять диапазон (если автоматически выбралось больше или меньше, чем хотелось), - в список столбцов попадают ВСЕ столбцы, в которых есть данные. При этом ни один столбец не выбран по умолчанию.
Здесь я больше переживал за количество строк... Это мы с тобой такие умные, по одной таблице на лист кладём. А сплошь и рядом встречаются книги, где может быть и десяток табличек бок о бок (или в шахматном порядке, квадратно-гнездовым способом). И в этом случае работу расширения следует ограничить только одной, текущей таблицей, а не всеми колонками и всеми строками. А то и только выделенной частью таблицы. И не стоит начинать разговор о том, что такая организация данных не правильная - если аналитику удобно видеть десяток регионов (магазинов, учеников) одновременно, значит так и будет.
И насчет "не выбран по умолчанию" - тоже спорно. Тут же раздастся вопль "А вот в Эксель!.."
А вот дополнить форму RefEdit или его аналогом - сложно, но можно.
Кстати, Михаил, ты не в курсе, почему в формах интерфейса такой элемент управления есть, а в редакторе диалогов его не видно? Чисто техническая проблема или идеологическая?
Ну извините, если у вас три таблицы параллельно и вы удаляете СТРОКИ целиком из-за дубликотов только в одной таблице, наверное вы понимаете, что к чему, правда?
Насчет "не выбран по умолчанию" - судил по себе, я в Экселе всегда сбрасываю выделение и выбираю столбец вручную, чаще всего это ОДИН столбец
RefEdit - что за зверь?

Цитата: JohnSUN от  8 сентября 2018, 21:05
Цитата: kompilainenn от  8 сентября 2018, 15:18
>Объединенные ячейки - останавливать процесс, типа, плохие данные? Проверять все ли ячейки в диапазоне объединены одинаково и все-таки пытаться удалить дубли (Excel, похоже, именно так пытается поступать)?  Разобъединять, удалять, и опять объединять (если не удалились)? - эксель останавливает операцию и выдает ошибку, что все ячейки должны иметь одинаковый размер. Считаю, что нам надо так же
А здесь ты наступил на больной мозоль - тупость Майкрософтовцев иногда просто бесит. И это как раз один из таких случаев. Если вы, гады такие, видите, что не сможете выполнить операцию, то почему вы не сделали кнопку недоступной? Вывели форму, разрешили в ней клацать мышью, отмечать разные колонки, жать ОК... И всё для того, чтобы сообщить, мол, ничего не выйдет? Если честно - не считаю, что "нам надо так же"
Я имел ввиду, что не нужно обрабатывать объединенные ячейки, а уж выводить ли ошибку/предупрежение сразу или после - это дело такое. Сразу конечно лучше

Цитата: JohnSUN от  8 сентября 2018, 21:05
Цитата: kompilainenn от  8 сентября 2018, 15:18
>Значения - работаем с текстом в ячейке или с содержимым?
08.09.18; 8 Сентябрь, 2018; 2018-09-08 00:00:00; 43351 - это дубли или разные значения? - дубли
Или все-таки дать пользователю переключатель "По значению"-"По отображению"-"Автоматически" (третий вариант по алгоритму rami)?
Считаю, что переусложнять не надо, цель сего расширения - упрощение одной единственной функции, а вовсе не нагромождение еще одного диалога Фильтры

Цитата: JohnSUN от  8 сентября 2018, 21:05
Цитата: kompilainenn от  8 сентября 2018, 15:18
>Формулы - оставляем формулы или подменяем результатом вычислений? А ссылки в формулах не поплывут после удаления предыдущих строк? А что делать с #REF!, если удалена строка, на которую формула раньше ссылалась? - а надо посмотреть, что делает Эксель и обсудить с товарищами.
Ты нарочно, да?
Я посмотрел "что делает Эксель". Он тупо ломает формулы. Причем так, что даже "Ой, блин!" (Ctrl+Z) уже не может их восстановить. Не можем мы на это равняться
Я предложил поглядеть и обсудить. Ты поглядел и мы обсуждаем. Конечно, "я нарочно".

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

kompilainenn

Цитата: mikekaganski от  8 сентября 2018, 19:58Должен признаться, что я вообще дуб в UI, тем более в формах и диалогах... сорри.
не дуб, а шланг, гофрированный. Тока бы от UI откреститься....
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

JohnSUN

Цитата: kompilainenn от  8 сентября 2018, 22:25
RefEdit - что за зверь?
Да знаешь ты его, не раз пользовался
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

JohnSUN

Цитата: kompilainenn от  8 сентября 2018, 22:25
Ну извините, если у вас три таблицы параллельно и вы удаляете СТРОКИ целиком...
О! Вот где мы потерялись (разошлись во мнениях): ты с самого начала думал об удалении строк, а я - об удалении дубликатов в диапазоне. То есть, внутри уже выделенного прямоугольника, а не во всем листе.
Другими словами:
1. При запуске команды UnDouble выделена одна ячейка - выделение распахивается на весь текущий диапазон
2. Выделен диапазон - (если в диапазоне меньше двух строк выполняется пункт 1 и) открывается форма
3. Выделено больше одного диапазона (листа) - UnDouble недоступна

То есть если как у тебя - одна большая таблица на весь лист, - то и обрабатывается она вся целиком.

Анекдот вспомнил: "Маняша, ну идём..." - "Ну, ладно, идём... Только ты никому не говори!" - "А, не, тогда не интересно..."
Это я к чему?
Цитата: JohnSUN от  8 сентября 2018, 21:05
Считаю, что переусложнять не надо, цель сего расширения - упрощение одной единственной функции, а вовсе не...
"А, не, тогда не интересно..."

Цитата: kompilainenn от  8 сентября 2018, 15:18
Ты поглядел и мы обсуждаем. Конечно, "я нарочно".
А, тогда ладно - а то я таких случайностей не люблю  ;D

В принципе, формула формуле рознь. Если во всей строке есть формулы, но они все ссылаются на ячейки этой же самой строки, то вроде как ничего страшного и не произойдет, если несколько строк сверху-снизу просто исчезнут. Но вот процесс анализа формул - задачка, пожалуй, не тривиальная, может занять определённое время.

Цитата: kompilainenn от  8 сентября 2018, 22:25Вообще это вот удаление дублей используется чаще всего при подготовке какой-то преварительной. С другой стороны случаи бывают и клинические...надо думать и обсуждать с товарищами
Насчет клиники. Что вытворяет Эксель, если его просят удалить из диапазона дубли не по всей строке, а по некоторым колонкам? Число строк явно сокращается. А вот какие данные остаются? Первые встреченные?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

kompilainenn

погоди.
У меня есть таблица А1:Н20 на листе. Я хочу удалить СТРОКИ с дублями в столбце А.
А ты предлагаешь удалять в таком случае ячейки строго в диапазоне А1:Н20 со сдвигом вверх? Так?

Насчет "так не интересно" - предлагаю запилить некий базовый функционал и затем уже глядеть на расширение возможностей и потребностей, если оно понадобится.

Насчет обработки формул - я реально не знаю. Лично мне нужно было бы работать с чистыми данными, а-ля текст или числа.

Насчет того, как именно обрабатывает Эксель удаление дубликатов по нескольким столбцам - нужно почитать справку Эксель или просто провести натурный эксперимент
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Цитата: JohnSUN от  8 сентября 2018, 19:05...почему в формах интерфейса такой элемент управления есть, а в редакторе диалогов его не видно? Чисто техническая проблема или идеологическая?
Идеологическая — он там не нужен, это маленькое окошко вызывается специальным методом.

JohnSUN

Цитата: rami от  9 сентября 2018, 00:08
Цитата: JohnSUN от  8 сентября 2018, 19:05...почему в формах интерфейса такой элемент управления есть, а в редакторе диалогов его не видно? Чисто техническая проблема или идеологическая?
Идеологическая — он там не нужен, это маленькое окошко вызывается специальным методом.
Как-то не очень убедительно... Гораздо большее окошко выбора файла тоже вызывается отдельным специальным методом. Тем не менее текст-бокс с кнопочкой для вызова этого метода в панели Элементы управления присутствует и неплохо себя там чувствует.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Ты говоришь о "Выбор файла" в редакторе диалогов? Он там есть, в дополнительных элементах, но я давно объединил всё вместе.

JohnSUN

Цитата: kompilainenn от  8 сентября 2018, 23:44
У меня есть таблица А1:Н20 на листе. Я хочу удалить СТРОКИ с дублями в столбце А.
А ты предлагаешь удалять в таком случае ячейки строго в диапазоне А1:Н20 со сдвигом вверх? Так?
Верно, работать только в рамках этого диапазона. То есть, если правее колонки H есть что-нибудь и оно не было выделено перед запуском макроса, то оно останется точно таким же.
Цитата: kompilainenn от  8 сентября 2018, 23:44
Насчет "так не интересно" - предлагаю запилить некий базовый функционал и затем уже глядеть на расширение возможностей и потребностей, если оно понадобится.
А, ну это же класссика
Цитата: kompilainenn от  8 сентября 2018, 23:44
Насчет обработки формул - я реально не знаю. Лично мне нужно было бы работать с чистыми данными, а-ля текст или числа.
Я тоже пока не знаю. Проще всего было бы выбросить MsgBox с "Да"-"Нет" и вопросом "Все формулы в обрабатываемом диапазоне будут заменены на их вычисленные значения. Точно хотите продолжить?". Но простое решение - почти всегда не лучшее (чем дольше думает программист, тем меньше приходится задумываться пользователю)
Цитата: kompilainenn от  8 сентября 2018, 23:44
...или просто провести натурный эксперимент
Я же говорю - я попытался. При попытке разобраться, что именно они вытворяют с формулами - чуть крыша не поехала (или таки поехала?  ??? )

Цитата: rami от  9 сентября 2018, 09:00
Ты говоришь о "Выбор файла" в редакторе диалогов? Он там есть, в дополнительных элементах, но я давно объединил всё вместе.
Да, есть - именно он на скриншоте. И есть уже давно. Я говорю, что элемент "Выбор диапазона" (RefEdit) туда не включён. И не понимаю почему. Ведь по смыслу работы этот самый RefEdit не очень-то от выбора файла отличается. Ну, разве что возможны заморочки с модальностью формы (открытие файла не трогает основную форму, открывает окно поверх всего, а RefEdit должен родительскую форму свернуть/скрыть и потом развернуть, а она вроде как модальная, трогать её не положено)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Цитата: JohnSUN от  9 сентября 2018, 07:07Я говорю, что элемент "Выбор диапазона" (RefEdit) туда не включён. И не понимаю почему.
Так я и говорю, что рисовать его не нужно, его метод рисует.

JohnSUN

Придумал я классную историю про одного пенсионера из курортного городка, который как-то поехал порыбачить и поймал самую большую в своей жизни рыбу... Думал, опубликую, прославлюсь, гонораров отгребу... Блин! Оказывается какой-то Хэмингуэй уже спёр у меня этот сюжет. Ну, что тут сделаешь, а?
Цитата: kompilainenn от  8 сентября 2018, 22:25цель сего расширения - упрощение одной единственной функции, а вовсе не нагромождение еще одного диалога Фильтры
Бери и пользуйся
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

kompilainenn

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

kompilainenn

Цитата: JohnSUN от  9 сентября 2018, 08:37Бери и пользуйся
ну что я могу сказать. Оно работает. Не без странностей в плане выбора диапазона, но работает.
Чего я первым делом не полез на сайт с расширениями, я даже не знаю =(

Джон, херим нашу затею, или ты все же хочешь сделать лучше, чем это?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

kompilainenn

в продолжение темы: то расширение, ссылку на которое давал Джон, оно убого в плане производительности.
Однако теперь, благодаря Майку, мы имеем более вменяемое расширение, которое не вешает намертво ЛО на 1 миллионе строк.
Прикладываю в аттаче к этому посту и продублирую в первом
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

rami

Что-то не клеится...

Сделал маленькую табличку с дублирующейся строкой, но вместо удаления этой строки, пишет "Not finished! The changes will now be undone." ("Не закончено! Изменения будут отменены."), а затем откатывает последнее действие (даже если оно не имеет отношение к таблице данных)