|
|
||||||
Как быстро удалять лишние строки?27.05.2016, 09:41. Показов 12279. Ответов 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
Исправьте пожалуйста,прога должна,удалять лишние пробелы в файле,вместо этого удаляет все содержимое? Как удалять строки по найденному слову? Как с массива удалять столбцы или строки?
Объясните, как удалять строки из текстового файла? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|