kompilainenn
|
Ну, давай рожать истину... В смысле - спорить >уточнять диапазон (если автоматически выбралось больше или меньше, чем хотелось), - в список столбцов попадают ВСЕ столбцы, в которых есть данные. При этом ни один столбец не выбран по умолчанию.
Здесь я больше переживал за количество строк... Это мы с тобой такие умные, по одной таблице на лист кладём. А сплошь и рядом встречаются книги, где может быть и десяток табличек бок о бок (или в шахматном порядке, квадратно-гнездовым способом). И в этом случае работу расширения следует ограничить только одной, текущей таблицей, а не всеми колонками и всеми строками. А то и только выделенной частью таблицы. И не стоит начинать разговор о том, что такая организация данных не правильная - если аналитику удобно видеть десяток регионов (магазинов, учеников) одновременно, значит так и будет. И насчет "не выбран по умолчанию" - тоже спорно. Тут же раздастся вопль "А вот в Эксель!.." А вот дополнить форму RefEdit или его аналогом - сложно, но можно. Кстати, Михаил, ты не в курсе, почему в формах интерфейса такой элемент управления есть, а в редакторе диалогов его не видно? Чисто техническая проблема или идеологическая? Ну извините, если у вас три таблицы параллельно и вы удаляете СТРОКИ целиком из-за дубликотов только в одной таблице, наверное вы понимаете, что к чему, правда? Насчет "не выбран по умолчанию" - судил по себе, я в Экселе всегда сбрасываю выделение и выбираю столбец вручную, чаще всего это ОДИН столбец RefEdit - что за зверь? >Объединенные ячейки - останавливать процесс, типа, плохие данные? Проверять все ли ячейки в диапазоне объединены одинаково и все-таки пытаться удалить дубли (Excel, похоже, именно так пытается поступать)? Разобъединять, удалять, и опять объединять (если не удалились)? - эксель останавливает операцию и выдает ошибку, что все ячейки должны иметь одинаковый размер. Считаю, что нам надо так же А здесь ты наступил на больной мозоль - тупость Майкрософтовцев иногда просто бесит. И это как раз один из таких случаев. Если вы, гады такие, видите, что не сможете выполнить операцию, то почему вы не сделали кнопку недоступной? Вывели форму, разрешили в ней клацать мышью, отмечать разные колонки, жать ОК... И всё для того, чтобы сообщить, мол, ничего не выйдет? Если честно - не считаю, что "нам надо так же" Я имел ввиду, что не нужно обрабатывать объединенные ячейки, а уж выводить ли ошибку/предупрежение сразу или после - это дело такое. Сразу конечно лучше >Значения - работаем с текстом в ячейке или с содержимым? 08.09.18; 8 Сентябрь, 2018; 2018-09-08 00:00:00; 43351 - это дубли или разные значения? - дубли
Или все-таки дать пользователю переключатель "По значению"-"По отображению"-"Автоматически" (третий вариант по алгоритму rami)? Считаю, что переусложнять не надо, цель сего расширения - упрощение одной единственной функции, а вовсе не нагромождение еще одного диалога Фильтры >Формулы - оставляем формулы или подменяем результатом вычислений? А ссылки в формулах не поплывут после удаления предыдущих строк? А что делать с #REF!, если удалена строка, на которую формула раньше ссылалась? - а надо посмотреть, что делает Эксель и обсудить с товарищами. Ты нарочно, да? Я посмотрел "что делает Эксель". Он тупо ломает формулы. Причем так, что даже "Ой, блин!" (Ctrl+Z) уже не может их восстановить. Не можем мы на это равняться Я предложил поглядеть и обсудить. Ты поглядел и мы обсуждаем. Конечно, "я нарочно". Вообще это вот удаление дублей используется чаще всего при подготовке какой-то преварительной. С другой стороны случаи бывают и клинические...надо думать и обсуждать с товарищами
|
|
|
Записан
|
|
|
|
kompilainenn
|
Должен признаться, что я вообще дуб в UI, тем более в формах и диалогах... сорри. не дуб, а шланг, гофрированный. Тока бы от UI откреститься....
|
|
|
Записан
|
|
|
|
JohnSUN
|
RefEdit - что за зверь?
Да знаешь ты его, не раз пользовался
|
|
|
Записан
|
|
|
|
JohnSUN
|
Ну извините, если у вас три таблицы параллельно и вы удаляете СТРОКИ целиком... О! Вот где мы потерялись (разошлись во мнениях): ты с самого начала думал об удалении строк, а я - об удалении дубликатов в диапазоне. То есть, внутри уже выделенного прямоугольника, а не во всем листе. Другими словами: 1. При запуске команды UnDouble выделена одна ячейка - выделение распахивается на весь текущий диапазон 2. Выделен диапазон - (если в диапазоне меньше двух строк выполняется пункт 1 и) открывается форма 3. Выделено больше одного диапазона (листа) - UnDouble недоступна То есть если как у тебя - одна большая таблица на весь лист, - то и обрабатывается она вся целиком. Анекдот вспомнил: "Маняша, ну идём..." - "Ну, ладно, идём... Только ты никому не говори!" - "А, не, тогда не интересно..."Это я к чему? Считаю, что переусложнять не надо, цель сего расширения - упрощение одной единственной функции, а вовсе не... "А, не, тогда не интересно..." Ты поглядел и мы обсуждаем. Конечно, "я нарочно". А, тогда ладно - а то я таких случайностей не люблю  В принципе, формула формуле рознь. Если во всей строке есть формулы, но они все ссылаются на ячейки этой же самой строки, то вроде как ничего страшного и не произойдет, если несколько строк сверху-снизу просто исчезнут. Но вот процесс анализа формул - задачка, пожалуй, не тривиальная, может занять определённое время. Вообще это вот удаление дублей используется чаще всего при подготовке какой-то преварительной. С другой стороны случаи бывают и клинические...надо думать и обсуждать с товарищами
Насчет клиники. Что вытворяет Эксель, если его просят удалить из диапазона дубли не по всей строке, а по некоторым колонкам? Число строк явно сокращается. А вот какие данные остаются? Первые встреченные?
|
|
|
Записан
|
|
|
|
kompilainenn
|
погоди. У меня есть таблица А1:Н20 на листе. Я хочу удалить СТРОКИ с дублями в столбце А. А ты предлагаешь удалять в таком случае ячейки строго в диапазоне А1:Н20 со сдвигом вверх? Так?
Насчет "так не интересно" - предлагаю запилить некий базовый функционал и затем уже глядеть на расширение возможностей и потребностей, если оно понадобится.
Насчет обработки формул - я реально не знаю. Лично мне нужно было бы работать с чистыми данными, а-ля текст или числа.
Насчет того, как именно обрабатывает Эксель удаление дубликатов по нескольким столбцам - нужно почитать справку Эксель или просто провести натурный эксперимент
|
|
|
Записан
|
|
|
|
rami
|
...почему в формах интерфейса такой элемент управления есть, а в редакторе диалогов его не видно? Чисто техническая проблема или идеологическая? Идеологическая — он там не нужен, это маленькое окошко вызывается специальным методом.
|
|
|
Записан
|
|
|
|
JohnSUN
|
...почему в формах интерфейса такой элемент управления есть, а в редакторе диалогов его не видно? Чисто техническая проблема или идеологическая? Идеологическая — он там не нужен, это маленькое окошко вызывается специальным методом. Как-то не очень убедительно... Гораздо большее окошко выбора файла тоже вызывается отдельным специальным методом. Тем не менее текст-бокс с кнопочкой для вызова этого метода в панели Элементы управления присутствует и неплохо себя там чувствует.
|
|
|
Записан
|
|
|
|
rami
|
Ты говоришь о "Выбор файла" в редакторе диалогов? Он там есть, в дополнительных элементах, но я давно объединил всё вместе.
|
|
|
Записан
|
|
|
|
JohnSUN
|
У меня есть таблица А1:Н20 на листе. Я хочу удалить СТРОКИ с дублями в столбце А. А ты предлагаешь удалять в таком случае ячейки строго в диапазоне А1:Н20 со сдвигом вверх? Так?
Верно, работать только в рамках этого диапазона. То есть, если правее колонки H есть что-нибудь и оно не было выделено перед запуском макроса, то оно останется точно таким же. Насчет "так не интересно" - предлагаю запилить некий базовый функционал и затем уже глядеть на расширение возможностей и потребностей, если оно понадобится.
А, ну это же класссикаНасчет обработки формул - я реально не знаю. Лично мне нужно было бы работать с чистыми данными, а-ля текст или числа.
Я тоже пока не знаю. Проще всего было бы выбросить MsgBox с "Да"-"Нет" и вопросом "Все формулы в обрабатываемом диапазоне будут заменены на их вычисленные значения. Точно хотите продолжить?". Но простое решение - почти всегда не лучшее (чем дольше думает программист, тем меньше приходится задумываться пользователю) ...или просто провести натурный эксперимент
Я же говорю - я попытался. При попытке разобраться, что именно они вытворяют с формулами - чуть крыша не поехала (или таки поехала?  ) Ты говоришь о "Выбор файла" в редакторе диалогов? Он там есть, в дополнительных элементах, но я давно объединил всё вместе.
Да, есть - именно он на скриншоте. И есть уже давно. Я говорю, что элемент "Выбор диапазона" (RefEdit) туда не включён. И не понимаю почему. Ведь по смыслу работы этот самый RefEdit не очень-то от выбора файла отличается. Ну, разве что возможны заморочки с модальностью формы (открытие файла не трогает основную форму, открывает окно поверх всего, а RefEdit должен родительскую форму свернуть/скрыть и потом развернуть, а она вроде как модальная, трогать её не положено)
|
|
|
Записан
|
|
|
|
rami
|
Я говорю, что элемент "Выбор диапазона" (RefEdit) туда не включён. И не понимаю почему. Так я и говорю, что рисовать его не нужно, его метод рисует.
|
|
|
Записан
|
|
|
|
JohnSUN
|
Придумал я классную историю про одного пенсионера из курортного городка, который как-то поехал порыбачить и поймал самую большую в своей жизни рыбу... Думал, опубликую, прославлюсь, гонораров отгребу... Блин! Оказывается какой-то Хэмингуэй уже спёр у меня этот сюжет. Ну, что тут сделаешь, а?цель сего расширения - упрощение одной единственной функции, а вовсе не нагромождение еще одного диалога Фильтры
Бери и пользуйся
|
|
|
Записан
|
|
|
|
kompilainenn
|
Велосипедостроительство рулит и педалит
|
|
|
Записан
|
|
|
|
kompilainenn
|
Бери и пользуйся ну что я могу сказать. Оно работает. Не без странностей в плане выбора диапазона, но работает. Чего я первым делом не полез на сайт с расширениями, я даже не знаю =( Джон, херим нашу затею, или ты все же хочешь сделать лучше, чем это?
|
|
|
Записан
|
|
|
|
kompilainenn
|
в продолжение темы: то расширение, ссылку на которое давал Джон, оно убого в плане производительности. Однако теперь, благодаря Майку, мы имеем более вменяемое расширение, которое не вешает намертво ЛО на 1 миллионе строк. Прикладываю в аттаче к этому посту и продублирую в первом
|
|
|
Записан
|
|
|
|
rami
|
Что-то не клеится...
Сделал маленькую табличку с дублирующейся строкой, но вместо удаления этой строки, пишет "Not finished! The changes will now be undone." ("Не закончено! Изменения будут отменены."), а затем откатывает последнее действие (даже если оно не имеет отношение к таблице данных)
|
|
|
Записан
|
|
|
|
|