Как да изтриете празни редове в Excel с VBA, формули и Power Query

  • Споделя Това
Michael Brown

Този урок ще ви научи на няколко прости трика за безопасно изтриване на множество празни редове в Excel, без да губите нито една информация. .

Празните редове в Excel са проблем, с който всички се сблъскваме от време на време, особено когато комбинираме данни от различни източници или импортираме информация от друго място. Празните редове могат да причинят голям хаос в работните ви листове на различни нива, а ръчното им изтриване може да бъде времеемък и склонен към грешки процес. В тази статия ще научите няколко прости и надеждни метода за премахване на празни редове вработните си листове.

    Как да НЕ премахвате празни редове в Excel

    Съществуват няколко различни начина за изтриване на празни редове в Excel, но изненадващо много онлайн ресурси се придържат към най-опасния, а именно Намиране & Избор > Отидете на специален > Заготовки .

    Какво не е наред с тази техника? Тя избира всички заготовки в даден диапазон и в резултат на това ще изтриете всички редове, които съдържат само една празна клетка.

    На изображението по-долу е показана оригиналната таблица вляво и получената таблица вдясно. В получената таблица всички непълни редове са изчезнали, дори ред 10, в който липсва само датата в колона D:

    Изводът: ако не искате да объркате данните си, никога не изтривайте празни редове, като избирате празни клетки. Вместо това използвайте един от по-обмислените подходи, разгледани по-долу.

    Как да премахнете празните редове в Excel с VBA

    Excel VBA може да поправи много неща, включително многобройни празни редове. Най-хубавото на този подход е, че не изисква никакви умения за програмиране. Просто вземете един от следните кодове и го стартирайте в Excel (инструкциите са тук).

    Макрос 1. Изтриване на празни редове в избран диапазон

    Този код на VBA изтрива безшумно всички празни редове в избран диапазон, без да показва съобщение или диалогов прозорец на потребителя.

    За разлика от предишната техника, макросът изтрива ред, ако целият ред е празен Тя разчита на функцията CountA на работния лист, за да получи броя на непразните клетки във всеки ред, и след това изтрива редовете с нулев брой.

    Public Sub DeleteBlankRows() Dim SourceRange As Range Dim EntireRow As Range Set SourceRange = Application.Selection If Not (SourceRange Is Nothing ) Then Application.ScreenUpdating = False For I = SourceRange.Rows.Count To 1 Step -1 Set EntireRow = SourceRange.Cells(I, 1).EntireRow If Application.WorksheetFunction.CountA(EntireRow) = 0 Then EntireRow.Delete End If Next Application.ScreenUpdating= True End If End Sub

    Да се даде възможност на потребителя да изберете целевия диапазон след стартиране на макроса , използвайте този код:

    Public Sub RemoveBlankLines() Dim SourceRange As Range Dim EntireRow As Range On Error Resume Next Set SourceRange = Application.InputBox( _ "Select a range:" , "Delete Blank Rows" , _ Application.Selection.Address, Type :=8) If Not (SourceRange Is Nothing ) Then Application.ScreenUpdating = False For I = SourceRange.Rows.Count To 1 Step -1 Set EntireRow = SourceRange.Cells(I, 1).EntireRow IfApplication.WorksheetFunction.CountA(EntireRow) = 0 Тогава EntireRow.Delete End If Next Application.ScreenUpdating = True End If End Sub

    При стартиране макросът показва следното поле за въвеждане, избирате целевия диапазон и щраквате върху OK:

    В един момент всички празни линии в избрания диапазон ще бъдат премахнати, а останалите ще се изместят нагоре:

    Макрос 2. Изтриване на всички празни редове в Excel

    За да премахнете всички празни редове на активен лист , определете последния ред от използвания диапазон (т.е. реда, съдържащ последната клетка с данни) и след това тръгнете нагоре, като изтриете редовете, за които CountA връща нула:

    Sub DeleteAllEmptyRows() Dim LastRowIndex As Integer Dim RowIndex As Integer Dim UsedRng As Range Set UsedRng = ActiveSheet.UsedRange LastRowIndex = UsedRng.Row - 1 + UsedRng.Rows.Count Application.ScreenUpdating = False For RowIndex = LastRowIndex To 1 Step -1 If Application.CountA(Rows(RowIndex)) = 0 Then Rows(RowIndex).Delete End If Next RowIndex Application.ScreenUpdating = True End Sub

    Макрос 3. Изтриване на ред, ако клетката е празна

    С този макрос можете да изтриете цял ред, ако някоя клетка в посочената колона е празна.

    Следният код проверява колона А за празни полета. За да изтриете редове въз основа на друга колона, заменете "A" с подходяща буква.

    Sub DeleteRowIfCellBlank() On Error Resume Next Columns( "A" ).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub

    Всъщност макросът използва Отидете на специален > Заготовки и можете да постигнете същия резултат, като извършите тези стъпки ръчно.

    Забележка: Макросът изтрива празните редове в целия лист Като предпазна мярка може да е разумно да направите резервно копие на работния лист, преди да стартирате този макрос.

    Как да премахнете празните редове в Excel с VBA

    За да изтриете празни редове в Excel с помощта на макрос, можете да вмъкнете кода VBA в собствената си работна книга или да стартирате макрос от нашата примерна работна книга.

    Добавяне на макрос в работната книга

    За да вмъкнете макрос в работната си книга, изпълнете следните стъпки:

    1. Отворете работния лист, в който искате да изтриете празните редове.
    2. Натиснете Alt + F11, за да отворите редактора на Visual Basic.
    3. В левия прозорец щракнете с десния бутон на мишката върху Тази работна книга , след което щракнете върху Вмъкване на > Модул .
    4. Поставете кода в прозореца Код.
    5. Натиснете F5, за да стартирате макроса.

    За подробни инструкции стъпка по стъпка вижте Как да вмъкнем и използваме VBA в Excel.

    Изпълнение на макрос от нашата примерна работна книга

    Изтеглете нашата примерна работна книга с макроси за изтриване на празни редове и стартирайте един от следните макроси оттам:

    DeleteBlankRows - премахва празните редове в текущо избрания диапазон.

    RemoveBlankLines - изтрива празни редове и размества нагоре в диапазон, който избирате след стартиране на макроса.

    DeleteAllEmptyRows - изтрива всички празни редове в активния лист.

    DeleteRowIfCellBlank - изтрива ред, ако клетка в определена колона е празна.

    За да стартирате макроса в Excel, направете следното:

    1. Отворете изтеглената работна книга и активирайте макросите, ако бъдете подканени.
    2. Отворете собствената си работна книга и преминете към интересуващия ви работен лист.
    3. В работния си лист натиснете Alt + F8, изберете макроса и щракнете върху Изпълнявайте .

    Формула за изтриване на празни редове в Excel

    Ако искате да видите какво изтривате, използвайте следната формула за идентифициране на празните редове:

    =IF(COUNTA(A2:D2)=0, "Blank", "Not blank")

    Където A2 е първата, а D2 е последната използвана клетка от първия ред данни.

    Въведете тази формула в E2 или във всяка друга празна колона в ред 2 и плъзнете дръжката за запълване, за да копирате формулата надолу.

    В резултат на това в празните редове ще има "Празно", а в редовете, които съдържат поне една клетка с данни - "Не е празно":

    Логиката на формулата е очевидна: преброявате непразните клетки с функцията COUNTA и използвате декларацията IF, за да върнете "Blank" (празно) при нулев брой, "Not Blank" (не празно) в противен случай.

    Всъщност можете да се справите добре и без IF:

    =COUNTA(A2:D2)=0

    В този случай формулата ще връща TRUE за празни редове и FALSE за непразни редове.

    След като въведете формулата, изпълнете следните стъпки, за да изтриете празните редове:

    1. Изберете която и да е клетка в заглавния ред и щракнете върху Сортиране и филтриране > Филтър на Начало в раздела Формати Това ще добави падащите стрелки за филтриране към всички клетки на заглавието.
    2. Щракнете върху стрелката в заглавието на колоната с формулата, махнете отметката (Select All), изберете Празна страница и щракнете върху ОК :
    3. Изберете всички филтрирани редове. За тази цел щракнете върху първата клетка на първия филтриран ред и натиснете Ctrl + Shift + End, за да разширите избора до последната клетка на последния филтриран ред.
    4. Кликнете с десния бутон върху селекцията, изберете Изтриване на ред от контекстното меню, след което потвърдете, че наистина искате да изтриете цели редове:
    5. Премахнете филтъра, като натиснете Ctrl + Shift + L . Или щракнете върху Начало tab> Сортиране и филтриране > Филтър .
    6. Изтрийте колоната с формулата, тъй като тя вече не ви е необходима.

    Това е всичко! В резултат имаме чиста таблица без празни редове, но със запазена информация:

    Съвет. Вместо да изтривате празни редове, можете копиране на непразни редове на друго място. За да го направите, филтрирайте редовете "Не е празно", изберете ги и натиснете Ctrl + C, за да копирате. След това преминете към друг лист, изберете горната лява клетка на целевия диапазон и натиснете Ctrl + V, за да поставите.

    Как да премахнете празните редове в Excel с Power Query

    В Excel 2016 и Excel 2019 има още един начин за изтриване на празни редове - като използвате функцията Power Query. В Excel 2010 и Excel 2013 тя може да бъде изтеглена като добавка.

    Важна забележка! Този метод работи със следната уговорка: Power Query преобразува изходните данни в таблица на Excel и променя форматирането, например цвета на запълване, границите и някои формати на числата. Ако форматирането на изходните данни е важно за вас, по-добре изберете друг начин за премахване на празни редове в Excel.

    1. Изберете диапазона, в който искате да изтриете празните редове.
    2. Отидете в Данни tab> Получаване & Трансформиране и щракнете върху От таблица/обхват . Това ще зареди таблицата ви в редактора на Power Query.
    3. На Начало на редактора на Power Query, щракнете върху Премахване на редове > Премахване на празни редове .
    4. Щракнете върху Затвори & Зареждане Това ще зареди получената таблица в нов работен лист и ще затвори редактора на заявки.

    В резултат на тези манипулации получих следната таблица без празни редове, но с няколко неприятни промени - форматът на валутата е изгубен, а датите се показват във формата по подразбиране вместо в потребителския:

    Как да изтриете редове, ако клетката в определена колона е празна

    В началото на този урок ви предупредихме да не премахвате празни редове чрез избиране на празни полета. Този метод обаче е полезен, ако искате да изтриете редове въз основа на празни полета в определена колона .

    Като пример, нека премахнем всички редове, в които клетка в колона А е празна:

    1. Изберете ключовата колона, в нашия случай колона А.
    2. На Начало щракнете върху Намиране & Избор > Отидете на специален . Или натиснете F5 и щракнете върху Специален... бутон.
    3. В Отидете на специален диалогов прозорец, изберете Заготовки и щракнете върху OK . Това ще избере празни клетки в използвания диапазон в колона А.
    4. Кликнете с десния бутон върху избрана клетка и изберете Изтрийте... от контекстното меню.
    5. В Изтриване на диалогов прозорец, изберете Целият ред и щракнете върху OK.

    Готово! Редовете, които нямат стойност в колона А, вече не съществуват:

    Същият резултат може да се постигне чрез филтриране на празните полета в ключовата колона.

    Как да премахнете допълнителните редове под данните

    Понякога редовете, които изглеждат напълно празни, всъщност могат да съдържат някои формати или непечатаеми символи. За да проверите дали последната клетка с данни наистина е последната използвана клетка в работния лист, натиснете Ctrl + End . Ако това ви е довело до визуално празен ред под данните, от гледна точка на Excel този ред не е празен. За да премахнете такива редове, направете следното:

    1. Щракнете върху заглавието на първия празен ред под данните, за да го изберете.
    2. Натиснете Ctrl + Shift + End. Това ще избере всички редове, които съдържат нещо, включително формати, интервали и непечатни символи.
    3. Кликнете с десния бутон върху селекцията и изберете Изтрийте... > Цял ред.

    Ако имате сравнително малък набор от данни, може да искате да премахнете всички празни редове под данните, например за да улесните превъртането. Въпреки че няма начин да изтриете неизползваните редове в Excel, нищо не ви пречи да скриване на Ето как:

    1. Изберете реда под последния ред с данни, като щракнете върху заглавието му.
    2. Натиснете Ctrl + Shift + стрелка надолу, за да разширите избора до последния ред на листа.
    3. Натиснете Ctrl + 9, за да скриете избраните редове. Или щракнете с десния бутон на мишката върху избрания ред, след което щракнете върху Скрий .

    За скриване на редовете , натиснете Ctrl + A, за да изберете целия лист, и след това натиснете Ctrl + Shift + 9, за да направите всички линии отново видими.

    По подобен начин можете да скриете неизползваните празни колони вдясно от данните. За подробните стъпки вижте Скриване на неизползваните редове в Excel, така че да се вижда само работната област.

    Най-бързият начин за премахване на празни редове в Excel

    Когато четяхте предишните примери, не ви ли се струваше, че използваме ковашки чук, за да разчупим ядка? Тук, в Ablebits, предпочитаме да не усложняваме нещата повече, отколкото е необходимо. Затова направихме още една стъпка напред и създадохме маршрут за изтриване на празни редове в Excel с две кликвания.

    След като добавите Ultimate Suite към лентата си, ето как можете да изтриване на всички празни редове в работен лист:

    1. На Инструменти на Ablebits в раздела Преобразуване група, щракнете върху Изтриване на празни полета > Празни редове :
    2. Добавката ще ви информира, че всички празни редове ще бъдат премахнати от активния работен лист и ще поиска потвърждение. Щракнете върху OK и след малко всички празни редове ще бъдат премахнати.

    Както е показано на скрийншота по-долу, премахнахме само абсолютно празни редове в които няма нито една клетка с данни:

    За да разберете повече за страхотните функции, включени в нашия Ultimate Suite за Excel, можете да изтеглите пробна версия.

    Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.