Excel зависает при удалении строк
Обновлено: 20.11.2024
У меня есть большое количество строк и столбцов (например, 500 тыс. строк и 20 столбцов), заполненных числами.
Я пытаюсь удалить все данные в столбце I, которые имеют определенное значение (например, меньше или равно 8), но когда я пытаюсь использовать автофильтр для удаления значений, Excel зависает и не удаляется .
Это работает быстро для данных в столбце A. Я переделал аналогичные данные на новом листе, чтобы убедиться, что все ячейки заполнены, столбцы/строки не скрыты и т. д.
Почему зависает столбец I?
По моему опыту, самый быстрый способ удалить такой объем данных – создать вспомогательный столбец, в котором будет указано пустое значение или "", если строка должна быть удалена, и любое другое непустое значение, если вы хотите его сохранить, а затем используйте цикл с Cells(Counter, Aux_Column).SpecialCells(xlCellTypeBlanks).EntireRow.Delete, который удалит все строки пустых ячеек.
Проверьте этот пост. В этом файле с 6400 строками: xlCellTypeBlanks заняло 53 секунды, фильтрация 74 секунды, матрица 94 секунды и цикл по ячейке, как вы предлагаете, 64 секунды. Зависит от вашего компьютера, вы можете уменьшить это время, но для удаления время, затрачиваемое стратегией, составляет: Матрица > Фильтр > Цикл/Удалить по ячейке > Удалить пустым. Удалить пробелом, это быстрее всего.
@newtovba на SO много сообщений об удалении строк, некоторые хорошие, некоторые не очень. Двумя распространенными являются автофильтр (который вы используете) и построение диапазона с помощью Union (с одним из которых вас связал Дэвид). Для набора данных такого размера и такого количества удалений метод Union может оказаться не таким быстрым. Причина в том, что Union плохо масштабируется, так как диапазон, объединенный в Union, становится больше (точнее, по мере увеличения количества несмежных диапазонов, объединенных в Union), время, затрачиваемое на добавление каждой дополнительной строки, увеличивается. Так что к тому времени, как вы доберетесь до 130-го ряда, Union будет очень медленным
В процентах. сколько столбцов нужно удалить? Потому что, возможно, будет быстрее просто поместить фильтр, скопировать видимые данные на вспомогательный лист, удалить исходный лист и переименовать вспомогательный лист.
4 ответа 4
На SO много сообщений об удалении строк, некоторые хорошие, некоторые не очень.
Двумя распространенными являются автофильтр (который вы используете) и построение диапазона с помощью Union (с одним из которых вас связал Дэвид).
Для набора данных такого размера и такого количества удалений вы обнаружите, что любой метод, использующий ссылки на методы рабочего листа Excel (например, автофильтр, поиск, сортировка, объединение, формула и т. д.), работает медленно. Некоторые из них будут лучше, чем другие, в зависимости от точного характера ваших данных.
Есть еще один метод, который может вам подойти. То есть на самом деле не удалить строки, а перезаписать данные измененной версией.
Обратите внимание, что это работает только в том случае, если у вас НЕТ формул (ни на этом листе, ни на любом другом), которые ссылаются на обрабатываемые данные.
Я запустил этот код на примере набора данных из 500 тыс. строк, 20 столбцов со случайными числами 1..32 (таким образом, удалено около 25% строк)
несколько вещей - файл раздулся и произошел сбой, и я пробовал типичные решения, как описано ниже - какие-либо другие предложения относительно моего Excel 365 или рабочего листа?
К сведению: уже пробовал восстанавливать Office, а также удалять и переустанавливать его
Файл состоит из 600 строк и соответствует столбцу JF, но размер файла даже после скрытия неиспользуемых строк и столбцов по-прежнему составляет 2,9 МБ, а рабочий лист – всего 1
1) ctrl+end не работает, чтобы найти последнюю использованную ячейку; когда я нажимаю ctrl + end, курсор просто переходит в конец строки
2) использовал f5, чтобы найти последнюю ячейку - это находит период последней ячейки или последнюю ячейку с данными?; это приводит меня к углу миллионной строки, так что не уверен, что
объясняет, почему размер моего файла раздут, но при использовании F5 для поиска объекта на листе их нет
3) поэтому вручную я перехожу к последней строке и выбираю строки под ней — щелчок правой кнопкой мыши по удалению приводит к сбою файла, когда он пытается удалить строки от строки 600 до миллиона
4) вместо удаления - я попытался скрыть эти неиспользуемые строки в нижней части листа - скрывает ли то же самое, что и удаление неиспользуемых строк с точки зрения уменьшения размера файла? Скрытие НЕ уменьшает размер моего файла
5) когда я пытаюсь выбрать строки от строки 600 до миллионной нижней строки, выделяя строки и щелкая правой кнопкой мыши, чтобы скрыть, несколько выделенных строк исчезают, так что выделяется и скрывается только 1 строка, а не все неиспользуемые строки
6) иногда ему удается выбрать все строки, и когда я пытаюсь их скрыть, Excel перестает отвечать и падает, что заставляет меня думать, что в файле есть что-то еще, что замедляет его или увеличивает его. (к вашему сведению, макросов в файле нет, и поиск объектов с помощью F5 тоже не находит)
7) Мне удалось успешно скрыть столбцы, начиная с JF, но когда я пытаюсь сгруппировать любое количество ячеек между столбцами DY и EQ, я не могу свернуть любую группу размера, так как получаю сообщение об ошибке "не могу нажать объекты с листа" (но снова F5 не находит объектов) Что это означает для моего файла в этих столбцах и как я могу это исправить?
Эта тема заблокирована. Вы можете подписаться на вопрос или проголосовать за него как полезный, но вы не можете отвечать в этой теме.
Зарегистрированный пользователь Регистрация Дата 27.04.2017 Местоположение Нью-Йорк MS-Off Ver Excel 2013 Сообщений 53
Удалить тысячи строк без заморозки
Я пробовал два разных способа массового удаления строк, но в обоих случаях Excel просто не отвечает
У меня есть лист с примерно 80 000 строк. Более половины строк содержат отрицательное число в определенном столбце, что аннулирует всю строку. Эти негативы случайным образом разбросаны по всему тексту.
Сначала я попытался использовать функцию фильтрации отрицательных чисел и просто выделил все строки для удаления. Это заморозило компьютер. Затем я попытался просто очистить данные с помощью клавиши удаления (вместо удаления строки), а затем найти и удалить пробелы. Все еще заморожен.
Есть ли другие предложения, которые может понять новичок?
Forum Expert Дата регистрации 23.12.2012 Местоположение Северная Каролина MS-Off Ver Excel 2019 Professional Plus — 2007 Enterprise Сообщений 6 463
Зарегистрированный пользователь Регистрация Дата 27.04.2017 Местоположение Нью-Йорк MS-Off Ver Excel 2013 Сообщений 53
Зарегистрированный пользователь Регистрация Дата 27.04.2017 Местоположение Нью-Йорк MS-Off Ver Excel 2013 Сообщений 53
Стреляйте. Это был мой первый раз, когда я использовал VBA, поэтому я, вероятно, просто испортил его, но я не мог заставить его работать. Спасибо за попытку, Логит. Он удалил только ячейку, а не всю строку, содержащую отрицательные значения. Думаю, я мог бы отсортировать пробелы и удалить строки таким образом.
Для тех, кто будет читать это в будущем, вот что в итоге сработало для меня:
Функция сортировки сработала для этого лучше, чем фильтр. Я отсортировал столбец от большего к меньшему. Затем я просто выделил отрицательные строки и очистил содержимое. Когда содержимое ячеек было очищено, и все они последовательно, удаление не заняло много времени. Он зависал только тогда, когда я использовал функцию фильтра, возможно, из-за того, что негативы были случайным образом встроены в документ вместе с различными формулами.
Forum Expert Дата регистрации 23.12.2012 Местоположение Северная Каролина MS-Off Ver Excel 2019 Professional Plus — 2007 Enterprise Сообщений 6 463
Что еще хуже, иногда Excel зависает или аварийно завершает работу, когда вы пытаетесь удалить строки. Почему это происходит? Если данные не отсортированы, Excel должен просмотреть каждый набор видимых строк и удалить разделы строк один за другим. Этот процесс занимает больше времени для больших наборов данных, содержащих больше строк, столбцов и формул.
Как удалить 10 000 строк в Excel?
Нажмите F5 или Ctrl+G, чтобы активировать диалоговое окно «Перейти». Введите 501:10000 в поле «Ссылка», затем нажмите «Ввод» или нажмите «ОК». Либо щелкните правой кнопкой мыши в любом месте выделенного диапазона и выберите "Удалить" в контекстном меню, либо нажмите верхнюю половину кнопки "Удалить" в группе "Ячейки" на вкладке "Главная" ленты.
Как удалить 50000 строк в Excel?
- Выберите все столбцы справа от последнего столбца, содержащего данные, или выберите все строки ниже последней строки, содержащей данные.
- На вкладке "Главная" в группе "Редактирование" нажмите стрелку рядом с кнопкой "Очистить", затем выберите "Очистить все".
- Сохраните лист и закройте его.
Как удалить большое количество строк в Excel?
Либо щелкните правой кнопкой мыши в любом месте выделенного диапазона и выберите "Удалить" в контекстном меню, либо нажмите верхнюю половину кнопки "Удалить" в группе "Ячейки" на вкладке "Главная" ленты. Благодарю за ваш ответ! Допустим, вы хотите удалить строки с 501 по 10000. Нажмите F5 или Ctrl+G, чтобы открыть диалоговое окно «Перейти».
Что делать, если Excel не отвечает?
Excel не отвечает, зависает, зависает или перестает работать
- Запустите Excel в безопасном режиме.
- Установите последние обновления.
- Убедитесь, что Excel не используется другим процессом.
- Исследуйте возможные проблемы с надстройками.
- Изучите детали и содержимое файла Excel.
- Проверьте, не создается ли ваш файл третьей стороной.
Как включить удаление строк в Excel?
Удаление строк на защищенном листе в Excel
- Выберите заблокированные ячейки.
- Выберите незаблокированные ячейки.
- Вставить строки.
- Удалить строки.
Как удалить ненужные строки в Excel?
Для этого удерживайте нажатой клавишу Ctrl и нажмите клавишу «-» (минус) на клавиатуре. Excel отображает диалоговое окно Удалить. Выберите параметр «Вся строка», как показано, а затем нажмите «ОК». После этого Excel удалит пустые строки.
Как удалить пустые строки в Excel?
Простые способы удаления пустых или пустых строк в Excel
- Выберите строку. Нажмите на его заголовок или выберите ячейку в строке и нажмите Shift + пробел.
- Щелкните правой кнопкой мыши заголовок выбранной строки. Появится раскрывающееся меню.
- Выберите Удалить.
Как удалить пустые строки в Excel 2016?
Удалить пустые строки
- На вкладке "Главная" в группе "Редактирование" нажмите "Найти и выбрать".
- Нажмите "Перейти к специальному".
- Выберите «Пробелы» и нажмите «ОК». Excel выделяет пустые ячейки.
- На вкладке "Главная" в группе "Ячейки" нажмите "Удалить".
- Нажмите «Удалить строки листа». Результат:
Как исправить, что Excel 2016 не отвечает?
Excel не отвечает, зависает, зависает или перестает работать
- Запустите Excel в безопасном режиме.
- Установите последние обновления.
- Убедитесь, что Excel не используется другим процессом.
- Исследуйте возможные проблемы с надстройками.
- Изучите детали и содержимое файла Excel.
- Проверьте, не создается ли ваш файл третьей стороной.
Как очистить кэш Excel?
Очистить кэш Office вручную
- Откройте Центр загрузки и нажмите кнопку "Настройки".
- В настройках центра загрузки установите флажок "Удалять файлы из кэша документов Office, когда они закрыты".
- Нажмите кнопку "Удалить кэшированные файлы".
Можно ли удалять строки в Excel?
Есть ли способ удалить строку заголовка в Excel?
Почему Excel так долго не отвечает?
Как быстро удалить строки в Excel?
Чтобы быстро удалить строку в Excel, выберите строку и используйте сочетание клавиш CTRL – (знак минус). Чтобы быстро удалить несколько строк, выберите несколько строк и используйте один и тот же ярлык.
Что делать, если Excel не отвечает?
Сколько строк может обрабатывать Excel без сбоев?
Несмотря на то, что у нас есть достаточное количество строк, подсчитайте в Excel, чтобы обработать достаточно данных, но тем не менее у нас есть некоторое ограничение на количество строк в Excel, которое ограничено 1048 576 строками в Excel 2019 Office 365. Каждая книга имеет разрешено ограниченное количество памяти, чтобы Excel мог нормально работать без сбоев.
Как удалить ненужные ячейки в Excel и строки?
Чтобы удалить ненужные строки и столбцы в электронной таблице, просто выделите строку или столбец, щелкнув маркер в верхней части столбца или слева от строки, просто щелкните его правой кнопкой мыши и выберите "Удалить". Надеюсь, это поможет вам.
Читайте также: