|
|
||||||
Как быстро удалять лишние строки?27.05.2016, 09:41. Показов 12392. Ответов 29
Метки нет (Все метки)
На листе есть структурированные данные: столбцов 40-250 (иногда больше), строк вообще 100 000-140 000 (и очень часто может быть больше).
Я нарисовал функцию, которая выбирает уникальные строки, остальные с листа удаляет командой
Сделать массив и обработать его не представляется возможным: слишком здоровый получается 140 000 строк * 200 столбцов *64 (тип Variant) = 1792 000 000 Вообщем лучше на листе... Может у кого есть идеи - как это ускорить? А то на ночь ставлю - и не факт, что утром будет готово...
0
|
||||||
| 27.05.2016, 09:41 | |
|
Ответы с готовыми решениями:
29
Удалять лишние пробелы в поле ввода информации на лету Подскажите почему не работает?Она должна удалять лишние пробелы в файле в любой строке. Как удалять элемент из строки в c++? |
|
Модератор
|
|
| 27.05.2016, 09:49 | |
|
удалять надо от последней записи к первой
а как написан ваш макрос
1
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 27.05.2016, 10:13 | ||||||
|
Для удаления строк есть быстрый код от ZVI - только вот что-то найти не могу...
Идея в том, чтоб проставить единички в массив, выгрузить рядом с данными, отсортировать, удалить сразу всё одним блоком. Добавлено через 2 минуты Нашёл:
Кстати там в той оригинальной теме я что-то с словарями писал - может там сразу и удаление неуникальных было, детали естественно не помню... А не, там задача была "удалить все строки в 7 столбце, значение которых не равно 2 или 3" - но думаю можно приспособить для анализа уникальности. Если конечно под Виндовс работаете.
2
|
||||||
|
4 / 4 / 3
Регистрация: 19.08.2013
Сообщений: 24
|
|
| 27.05.2016, 11:10 | |
|
Hugo121, спасибо за код, сохраню к себе в памятку. вообще когда появляется необходимость в ручную удалить много строк из еще большего количества(до миллиона) я сначала фильтром выделяю то, что хочу удалить, после последнего столбца ставлю везде 1. делаю по нему сортировку и удаляю.
1
|
|
|
|
|
| 27.05.2016, 11:30 [ТС] | |
|
shanemac51, спасибо за совет. А можно немножко пояснить - почему именно так?
Hugo121, меня немного смутило то, что на SQL -ресурсе опубликовано... но если написано для Excel - то в принципе надо пробовать... Сейчас прога работает - я чуть позже покопаюсь в коде. Хотя уже сейчас есть вопрос - сортировка... Что обеспечивается командой Sort? Вообще у меня каждая строка, намеченная на удаление, помечена словом "дубликат". Понимаю. что расточительство. но через время - понимать и код и содержимое листа проще. По идее, есть возможность отфильтровать строки с этой меткой одним движением. Думаю, лучше будет выделить строки через Union Добавлено через 2 минуты mitsakoolt, спасибо... стало понятно зачем сортировка тут... Хотя если несмежные диапазоны выделены - неужели нет способа их удалить без сортировки?
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 27.05.2016, 11:35 | |
|
Через union дольше, но тоже вариант.
Как раз вчера такое делал (вернее гонял ранее написанное) - само объединение делает за пару секунд, но вот затем удаление происходит раз так в 10 дольше. А если удалять построчно - то нужно снизу вверх потому что каждая удалённая строка как ни странно удаляется ![]() Т.е. пропадает и на её место сдвигается строка снизу, которую возможно тоже нужно бы удалить...
0
|
|
|
|
||||||
| 27.05.2016, 11:45 | ||||||
|
Мой не подходит по ссылке? исходник (без правки)
0
|
||||||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 27.05.2016, 11:52 | |
|
bedvit, тоже можно, но для количества в сотни тысяч строк как минимум перебирать и анализировать нужно бы данные массива - тут у Вас на каждую строку идёт два обращения к листу, что в 43*2 раза дольше, чем обращение к массиву.
Да и если всё брать в юнион - то не важно с какого конца перебирать, можно и сверху вниз.
0
|
|
|
|
|||||||
| 27.05.2016, 12:48 | |||||||
|
Hugo121, в общем согласен с вами. Выделение 1 млн. строк с поиском по условию 11 сек., это много, но по сравнению с операцией удаления
Добавлено через 23 минуты Поиск по условию через массив (0,078125 сек.), при отключенном Union. Теперь только вопрос в Union, и самой операции удаления.
С двумя условиями 0,16796875 сек.
0
|
|||||||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 27.05.2016, 12:49 | ||||||
0
|
||||||
|
4 / 4 / 3
Регистрация: 19.08.2013
Сообщений: 24
|
|||||||
| 27.05.2016, 12:53 | |||||||
0
|
|||||||
|
|
|
| 27.05.2016, 13:04 | |
|
Но Union нужен, когда строки нельзя сортировать, когда их много и когда их нужно удалить разом (что быстрее чем по одной или по несколько за раз)
Добавлено через 4 минуты Hugo121, согласен. Можно да же удалить второе условие, ТС возможно нужно только одно условие. думаю отключение экрана и перерасчет сильно не поможет в моем коде, там и так разом все делается (удаление). Добавлено через 3 минуты Каждое условие это 0,08 сек., копейки-копеек по сравнению с другими расчетами)
0
|
|
|
Модератор
|
|
| 27.05.2016, 14:30 | |
|
0
|
|
|
|
|||||||||||
| 28.05.2016, 15:16 [ТС] | |||||||||||
|
Ребята. Очень извиняюсь... Сейчас готовлюсь исчезнуть дней на 40... Поэтому работаю с Вашими рекомендациями очень нерегулярно... и отвечаю тоже... Тренируюсь на левшу. Экстренно))) Ибо чую - очень надо это мне на лето.
Галина. Форматирование и формулы в массив не гружу. Гружу командой
Добавлено через 1 минуту Выгружаю из массива уже обработанные данные аналогично Собственно здесь потери времени минимальны Добавлено через 1 час 1 минуту Вот что у меня получилось
0
|
|||||||||||
|
Модератор
|
||||||
| 28.05.2016, 17:11 | ||||||
1
|
||||||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
||||||
| 28.05.2016, 23:38 | ||||||
|
Я думаю быстрее будет в union брать не всю строку, а только одну ячейку строки.
А в конце удалять
1
|
||||||
|
|
|
| 29.05.2016, 18:36 | |
|
Hugo121, хорошая идея. Сегодня протестировал немного. Если строк много (на удаление) несколько десятков тысяч, Union работает медленно и удаление не столь быстрое как хотелось.
AndreA SN, сортировка в условиях задачи разрешается? Формул, условного форматирование нет? Порядок следования строк сохранятся должен?
0
|
|
| 29.05.2016, 18:36 | |
|
Помогаю со студенческими работами здесь
20
Исправьте пожалуйста,прога должна,удалять лишние пробелы в файле,вместо этого удаляет все содержимое? Как удалять строки по найденному слову? Как с массива удалять столбцы или строки?
Объясните, как удалять строки из текстового файла? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вот уже год прошел, как у меня домен в reg.ru ...
Etyuhibosecyu 16.04.2026
И ничего они мне не сделали. Если отвязать карту, никакие услуги они не навяжут. Я бы с радостью продлил еще на два года, чтобы не мучиться с временным доменом и меня уже знали по red-star-soft. com,. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
|