Скрыть строки, когда ячейка пуста excel (быстрее)

Я взглянул на некоторые статьи и предложения и придумал решение для моей проблемы.

Статья Более быстрый способ скрыть пустые строки, предлагаемые использовать для переключения Application.ScreenUpdating перед циклом на false и после на true. Это немного ускорило скрипт, но для 10.000 строк это все еще занимает довольно много времени.

Требования:

Если первая ячейка в строке пуста, скройте всю строку, которая должна быть обратно совместима с другими версиями Excel, чем 2013

Текущее рабочее решение для Excel 2013

  Application.ScreenUpdating = False Dim s As String For i = 1 To range("A1:A10000").Count s = i & ":" & i If IsEmpty(Cells(i, 1).Value) Then Rows(s).Select Selection.EntireRow.Hidden = True End If Next Application.ScreenUpdating = True 

К сожалению, я не знаю, сколько данных на листе, оно может содержать менее 10.000, которые я использовал в моем примере или даже больше. Когда я запускаю скрипт, он отлично работает, но занимает довольно много времени для 10.000 строк и возрастов для всех ячеек на листе.

Макрос будет запускаться автоматически при загрузке книги (не уверен, как это сделать либо ха-ха)

 Dim rngBlnk As Range On Error Resume Next 'in case no blanks are present... Set rngBlnk = Range("A1:A100000").SpecialCells(xlCellTypeBlanks) On Error GoTo 0 If Not rngBlnk Is Nothing Then Debug.Print rngBlnk.Address() rngBlnk.EntireRow.Hidden = True End If 

Как и в моих комментариях и в этом посте: более быстрый способ скрыть пустые строки и спасибо @tigeravatar за указание на это. Я использовал следующий код, который работал в моем сценарии:

 Range("A1:A10000").AutoFilter 1, "<>", , , False 

Процесс выбора требует времени, и нет нужды выбирать строку перед скрытием строки. Попробуйте вариант ниже …

 Application.ScreenUpdating = False Dim s As String For i = 1 To range("A1:A10000").Count s = i & ":" & i If IsEmpty(Cells(i, 1).Value) Then Rows(s).EntireRow.Hidden = True End If Next Application.ScreenUpdating = True 
Interesting Posts

Создайте временные листы в excel для выполнения вычислений

цикл через строку и объединить ячейки в виде заголовка vba

Excel INDEX / SMALL через несколько листов

Excel VBA Запись файла FDF с использованием переменных

Упростить процедуру «Сохранить как CSV»

Excel 2007 – предотвращение ввода данных в ячейку, как в строке выше

объединить длинные строки текста для загрузки на веб-сайт

Excel VBA. Есть ли способ иметь несколько диапазонов на одном листе, которые допускают разные события двойного щелчка?

Индекс доступа VBA Excel с именованным диапазоном

VBA: копирование ячейки со всех листов и вставка в столбец

Два одинаковых набора данных, которые будут отображаться на одной и той же сводной диаграмме

Excel 2016 – Текст обтекания, высота строки автоподстройки

Среднее значение Regex Excel Excel

Вставить данные из Excel в Word

Пронумеруйте имена и общий объем продаж для каждого имени из отдельного листа

Давайте будем гением компьютера.