Excel зависает при удалении строк

Обновлено: 03.07.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?

  1. Выберите все столбцы справа от последнего столбца, содержащего данные, или выберите все строки ниже последней строки, содержащей данные.
  2. На вкладке "Главная" в группе "Редактирование" нажмите стрелку рядом с кнопкой "Очистить", затем выберите "Очистить все".
  3. Сохраните лист и закройте его.

Как удалить большое количество строк в Excel?

Либо щелкните правой кнопкой мыши в любом месте выделенного диапазона и выберите "Удалить" в контекстном меню, либо нажмите верхнюю половину кнопки "Удалить" в группе "Ячейки" на вкладке "Главная" ленты. Благодарю за ваш ответ! Допустим, вы хотите удалить строки с 501 по 10000. Нажмите F5 или Ctrl+G, чтобы открыть диалоговое окно «Перейти».

Что делать, если Excel не отвечает?

Excel не отвечает, зависает, зависает или перестает работать

  1. Запустите Excel в безопасном режиме.
  2. Установите последние обновления.
  3. Убедитесь, что Excel не используется другим процессом.
  4. Исследуйте возможные проблемы с надстройками.
  5. Изучите детали и содержимое файла Excel.
  6. Проверьте, не создается ли ваш файл третьей стороной.

Как включить удаление строк в Excel?

Удаление строк на защищенном листе в Excel

  1. Выберите заблокированные ячейки.
  2. Выберите незаблокированные ячейки.
  3. Вставить строки.
  4. Удалить строки.

Как удалить ненужные строки в Excel?

Для этого удерживайте нажатой клавишу Ctrl и нажмите клавишу «-» (минус) на клавиатуре. Excel отображает диалоговое окно Удалить. Выберите параметр «Вся строка», как показано, а затем нажмите «ОК». После этого Excel удалит пустые строки.

Как удалить пустые строки в Excel?

Простые способы удаления пустых или пустых строк в Excel

  1. Выберите строку. Нажмите на его заголовок или выберите ячейку в строке и нажмите Shift + пробел.
  2. Щелкните правой кнопкой мыши заголовок выбранной строки. Появится раскрывающееся меню.
  3. Выберите Удалить.

Как удалить пустые строки в Excel 2016?

Удалить пустые строки

  1. На вкладке "Главная" в группе "Редактирование" нажмите "Найти и выбрать".
  2. Нажмите "Перейти к специальному".
  3. Выберите «Пробелы» и нажмите «ОК». Excel выделяет пустые ячейки.
  4. На вкладке "Главная" в группе "Ячейки" нажмите "Удалить".
  5. Нажмите «Удалить строки листа». Результат:

Как исправить, что Excel 2016 не отвечает?

Excel не отвечает, зависает, зависает или перестает работать

  • Запустите Excel в безопасном режиме.
  • Установите последние обновления.
  • Убедитесь, что Excel не используется другим процессом.
  • Исследуйте возможные проблемы с надстройками.
  • Изучите детали и содержимое файла Excel.
  • Проверьте, не создается ли ваш файл третьей стороной.

Как очистить кэш Excel?

Очистить кэш Office вручную

  1. Откройте Центр загрузки и нажмите кнопку "Настройки".
  2. В настройках центра загрузки установите флажок "Удалять файлы из кэша документов Office, когда они закрыты".
  3. Нажмите кнопку "Удалить кэшированные файлы".

Можно ли удалять строки в Excel?

Есть ли способ удалить строку заголовка в Excel?

Почему Excel так долго не отвечает?

Как быстро удалить строки в Excel?

Чтобы быстро удалить строку в Excel, выберите строку и используйте сочетание клавиш CTRL – (знак минус). Чтобы быстро удалить несколько строк, выберите несколько строк и используйте один и тот же ярлык.

Что делать, если Excel не отвечает?

Сколько строк может обрабатывать Excel без сбоев?

Несмотря на то, что у нас есть достаточное количество строк, подсчитайте в Excel, чтобы обработать достаточно данных, но тем не менее у нас есть некоторое ограничение на количество строк в Excel, которое ограничено 1048 576 строками в Excel 2019 Office 365. Каждая книга имеет разрешено ограниченное количество памяти, чтобы Excel мог нормально работать без сбоев.

Как удалить ненужные ячейки в Excel и строки?

Чтобы удалить ненужные строки и столбцы в электронной таблице, просто выделите строку или столбец, щелкнув маркер в верхней части столбца или слева от строки, просто щелкните его правой кнопкой мыши и выберите "Удалить". Надеюсь, это поможет вам.

Читайте также: