![]() |
||||||
Как быстро удалять лишние строки?27.05.2016, 09:41. Показов 11833. Ответов 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
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
||||||
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
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
27.05.2016, 11:35 | |
Через union дольше, но тоже вариант.
Как раз вчера такое делал (вернее гонял ранее написанное) - само объединение делает за пару секунд, но вот затем удаление происходит раз так в 10 дольше. А если удалять построчно - то нужно снизу вверх потому что каждая удалённая строка как ни странно удаляется ![]() Т.е. пропадает и на её место сдвигается строка снизу, которую возможно тоже нужно бы удалить...
0
|
![]() |
|
27.05.2016, 11:39 [ТС] | |
от жыж блин... А у меня прога работает... щас буду курочить код
![]()
0
|
![]() |
||||||
27.05.2016, 11:45 | ||||||
Мой не подходит по ссылке? исходник (без правки)
0
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
27.05.2016, 11:52 | |
bedvit, тоже можно, но для количества в сотни тысяч строк как минимум перебирать и анализировать нужно бы данные массива - тут у Вас на каждую строку идёт два обращения к листу, что в 43*2 раза дольше, чем обращение к массиву.
Да и если всё брать в юнион - то не важно с какого конца перебирать, можно и сверху вниз.
0
|
![]() |
|
27.05.2016, 11:59 [ТС] | |
bedvit, на основе его и буду колупать... и закомментированную строку с delete попытаюсь использовать... только дождусь когда прога доработает ...
0
|
![]() |
|||||||
27.05.2016, 12:48 | |||||||
Hugo121, в общем согласен с вами. Выделение 1 млн. строк с поиском по условию 11 сек., это много, но по сравнению с операцией удаления
Добавлено через 23 минуты Поиск по условию через массив (0,078125 сек.), при отключенном Union. Теперь только вопрос в Union, и самой операции удаления.
С двумя условиями 0,16796875 сек.
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
|
![]() |
|
29.05.2016, 18:36 | |
Hugo121, хорошая идея. Сегодня протестировал немного. Если строк много (на удаление) несколько десятков тысяч, Union работает медленно и удаление не столь быстрое как хотелось.
AndreA SN, сортировка в условиях задачи разрешается? Формул, условного форматирование нет? Порядок следования строк сохранятся должен?
0
|
29.05.2016, 18:36 | |
Помогаю со студенческими работами здесь
20
Исправьте пожалуйста,прога должна,удалять лишние пробелы в файле,вместо этого удаляет все содержимое? Как удалять строки по найденному слову? Как с массива удалять столбцы или строки?
Объясните, как удалять строки из текстового файла? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
|
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
|
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
|
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
|
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
|
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
|
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
|
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
|
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
|
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. )
Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
|