Удаление пустых строк и столбцов в данных
Пустые строки и столбцы могут быть головной болью в таблицах во многих случаях. Стандартные функции сортировки, фильтрации, подведения итогов, создания сводных таблиц и т.д. воспринимают пустые строки и столбцы как разрыв таблицы, не подхватывая данные, расположенные за ними далее. Если таких разрывов много, то удалять их вручную может оказаться весьма затратно, а удалить сразу всех «оптом», используя фильтрацию не получится, т.к. фильтр тоже будет «спотыкаться» на разрывах. Давайте рассмотрим несколько способов решения этой задачи.
Способ 1. Поиск пустых ячеек

Это, может, и не самый удобный, но точно самый простой способ вполне достойный упоминания. Предположим, что мы имеем дело вот с такой таблицей, содержащей внутри множество пустых строк и столбцов (для наглядности выделены цветом):
Допустим, мы уверены, что в первом столбце нашей таблицы (колонка B) всегда обязательно присутствует название какого-либо города. Тогда пустые ячейки в этой колонке будут признаком ненужных пустых строк. Чтобы быстро их все удалить делаем следующее:
- Выделяем диапазон с городами (B2:B26)
- Нажимаем клавишу F5 и затем кнопку Выделить (Go to Special) или выбираем на вкладке Главная — Найти и выделить — Выделить группу ячеек (Home — Find&Select — Go to special) .
- В открывшемся окне выбираем опцию Пустые ячейки (Blanks) и жмём ОК – должны выделиться все пустые ячейки в первом столбце нашей таблицы.
- Теперь выбираем на вкладке Главная команду Удалить — Удалить строки с листа (Delete — Delete rows) или жмём сочетание клавиш Ctrl + минус — и наша задача решена.
Само-собой, от пустых столбцов можно избавиться совершенно аналогично, взяв за основу шапку таблицы.
Способ 2. Поиск незаполненных строк
Как вы, возможно, уже сообразили, предыдущий способ сработает только в том случае, если в наших данных обязательно присутствую полностью заполненные строки и столбцы, за которые можно зацепиться при поиске пустых ячеек. Но что, если такой уверенности нет, и в данных могут содержаться и пустые ячейки в том числе?
Взгляните, например, на следующую таблицу — как раз такой случай:
Здесь подход будет чуть похитрее:
-
Введём в ячейку A2 функцию СЧЁТЗ (COUNTA) , которая вычислит количество заполненных ячеек в строке правее и скопируем эту формулу вниз на всю таблицу:

К сожалению, со столбцами такой трюк уже не проделать – фильтровать по столбцам Excel пока не научился.
Способ 3. Макрос удаления всех пустых строк и столбцов на листе
Для автоматизации подобной задачи можно использовать и простой макрос. Нажмите сочетание клавиш Alt + F11 или выберите на вкладке Разработчик — Visual Basic (Developer — Visual Basic Editor) . Если вкладки Разработчик не видно, то можно включить ее через Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon) .
В открывшемся окне редактора Visual Basic выберите команду меню Insert — Module и в появившийся пустой модуль скопируйте и вставьте следующие строки:
Sub DeleteEmpty() Dim r As Long, rng As Range 'удаляем пустые строки For r = 1 To ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count If Application.CountA(Rows(r)) = 0 Then If rng Is Nothing Then Set rng = Rows(r) Else Set rng = Union(rng, Rows(r)) End If Next r If Not rng Is Nothing Then rng.Delete 'удаляем пустые столбцы Set rng = Nothing For r = 1 To ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count If Application.CountA(Columns(r)) = 0 Then If rng Is Nothing Then Set rng = Columns(r) Else Set rng = Union(rng, Columns(r)) End If Next r If Not rng Is Nothing Then rng.Delete End Sub
Закройте редактор и вернитесь в Excel.
Теперь нажмите сочетание Alt + F8 или кнопку Макросы на вкладке Разработчик. В открывшемся окне будут перечислены все доступные вам в данный момент для запуска макросы, в том числе только что созданный макрос DeleteEmpty. Выберите его и нажмите кнопку Выполнить (Run) — все пустые строки и столбцы на листе будут мгновенно удалены.
Способ 4. Запрос Power Query
Ещё один способ решить нашу задачу и весьма частый сценарий — это удаление пустых строк и столбцов в Power Query.
Сначала давайте загрузим нашу таблицу в редактор запросов Power Query. Можно конвертировать её в динамическую «умную» сочетанием клавиш Ctrl+T или же просто выделить наш диапазон данных и дать ему имя (например Данные) в строке формул, преобразовав в именованный:
Теперь используем команду Данные — Получить данные — Из таблицы/диапазона (Data — Get Data — From table/range) и грузим всё в Power Query:
Дальше всё просто:
- Удаляем пустые строки командой Главная — Сократить строки — Удалить строки — Удалить пустые строки (Home — Remove Rows — Remove empty rows).
- Щёлкаем правой кнопкой мыши по заголовку первого столбца Город и выбираем в контекстном меню команду Отменить свёртывание других столбцов (Unpivot Other Columns). Наша таблица будет, как это технически правильно называется, нормализована — преобразована в три столбца: город, месяц и значение с пересечения города и месяца из исходной таблицы. Особенность этой операции в Power Query в том, что она пропускает в исходных данных пустые ячейки, что нам и требуется:



Ссылки по теме
- Что такое макрос, как он работает, куда копировать текст макроса, как запустить макрос?
- Заполнение всех пустых ячеек в списке значениями вышестоящих ячеек
- Удаление всех пустых ячеек из заданного диапазона
- Удаление всех пустых строк на листе с помощью надстройки PLEX
Удаление пустых строк в таблице (Microsoft Office Word)
Автоматически создаются документы в ворде на несколько сотен страниц состоящие из текста и таблиц. Вопрос как удалить пустые строки в табличной части документа.
Sub DeleteEmptyRows() On Error Resume Next Dim oSelRng As Range 'Область из которой обрабатывать таблицы Dim oTbl As Table 'Текущая таблица Dim oCell As Cell 'Ячейка в таблице Dim oRowRng As Range 'Диапазон для строки Dim iStart As Long 'Начало первой пустой ячейки в строке Dim iEnd As Long 'Конец последней пустой ячейки в строке Dim i As Long 'Счетчик строк в таблице Dim j As Long 'Счетчик таблиц Dim sEmptyString As String 'Служебная строка Set oSelRng = Selection.Range 'Запоминаем диапазон выделения 'Перебираем таблицы в выделении, начиная с конца For j = oSelRng.Tables.Count To 1 Step -1 Set oTbl = oSelRng.Tables(j) 'Запоминаем таблицу 'Перебираем ячейки в первом столбце For i = oTbl.Rows.Count To 1 Step -1 If Len(oTbl.Cell(i, 1).Range.Text) = 2 Then 'Если ячейка пустая, т.е. содержит только конец абзаца и конец ячейки If Err.Number <> 5941 Then 'Если такая ячейка существует Set oCell = oTbl.Cell(i, 1) 'Запоминаем первую ячейку в строке If Not oCell Is Nothing Then 'Если ячейка запомниалась iStart = oCell.Range.Start 'Запоминаем ее начало Do While Len(oCell.Next.Range.Text) = 2 'Теперь ищем последнюю пустую ячейку в этой же строке iEnd = oCell.Next.Range.End 'Запоминаем ее конец Set oCell = oCell.Next Loop Set oRowRng = oSelRange.Document.Range(iStart, iEnd) 'Запоминаем диапазон от начала первой пустой ячейки до конца последней 'Удаляем из строки знаки абзаца и конца ячейки sEmptyString = Replace(oRowRng.Text, ChrW(13) & ChrW(7), "") If Len(sEmptyString) = 0 Then 'Если строка пустая, oRowRng.Cells.Delete ' то ячейки удаляем End If End If Else: Err.Clear 'очищаем ошибку End If End If Next i Next j End Sub
Похожие статьи
- Вставить текст в определенную строку ячейки таблицы в ворде
- Извлечь фотографии из doc (docx) файла
- Экспорт в Word из Memo
- Скопировать данные из Edit в Word
- Как из delphi вставить символ в word?
- Словарь словоформ русского языка
- Запуск макроса в открытом на данный момент Word
- Как макросом брать данные с word документов в excel?
- Как экспортировать таблицу ehlib в word?
- Добавить данные из DBgrid в Ms Word
Удалить строки в таблице с пустой ячейкой
Имеется большая таблица, в некоторых строках которой в 6 столбце есть пустая ячейка. Нужно найти такие ячейки и удалить строки, в которых они есть. Поможете макросом?
2 Ответ от aap77 04.07.2012 11:40:09
Re: Удалить строки в таблице с пустой ячейкой
Public Sub DeleteCells() Dim Doc As Document Dim Table As Table Set Doc = ActiveDocument For Each Table In Doc.Tables Table.Range.Select Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "[^0013]" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll Next Table End Sub
3 Ответ от Lohmatiy 04.07.2012 12:35:40
Re: Удалить строки в таблице с пустой ячейкой
неа, не работает. Удаляет пробелы кое-где, и все
4 Ответ от aap77 04.07.2012 12:51:28
Re: Удалить строки в таблице с пустой ячейкой
Все работает, в этом макросе вообще нет ссылок на пробелы, вышлите таблицу
5 Ответ от aap77 04.07.2012 12:59:54
Re: Удалить строки в таблице с пустой ячейкой
Опять же вопрос, если в строке встречаются пустые и заполненные ячейки то удалять всю строку? или же только когда все пустые ячейки в строке. В зависимости от этого уже просто придется дописывать созданный макрос, потому, что без действий уже созданного макроса в остальной могут возникать ошибки из-за не правильного форматирования таблицы автором
6 Ответ от Lohmatiy 04.07.2012 13:27:25
Re: Удалить строки в таблице с пустой ячейкой
В строке могут быть как пустые, так и не пустые ячейки. Нас интересует только 6 ячейка каждой строки. Если в ней пусто, удалить всю строку.
Post’s attachments
1111.doc 61 Кб, 8 скачиваний с 2012-07-04
You don’t have the permssions to download the attachments of this post.
7 Ответ от aap77 04.07.2012 16:41:07
Re: Удалить строки в таблице с пустой ячейкой
Вот теперь понятно сделаем
8 Ответ от aap77 04.07.2012 18:37:35
Re: Удалить строки в таблице с пустой ячейкой
Вот попробуйте макрос по Вашим условиям
Public Sub DeleteCells() Dim Doc As Document Dim Table As Table Dim Rw As Row Dim Cell As Cell Set Doc = ActiveDocument For Each Table In Doc.Tables Table.Range.Select Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "[^0013]" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll For Each Rw In Table.Rows i = 0 For Each Cell In Rw.Cells i = i + 1 If Cell.Range.Characters.Count = 1 And i = 6 Then Rw.Delete End If Next Cell Next Rw Next Table End Sub
9 Ответ от Lohmatiy 04.07.2012 21:48:19
Re: Удалить строки в таблице с пустой ячейкой
Вот спасибо! Весь инет перерыл в поисках того. как делать макросы в ворде. Один эксель. А вы выручили.
10 Ответ от aap77 04.07.2012 22:31:07
Re: Удалить строки в таблице с пустой ячейкой
А на работу взять слабо? Я Вам весь производственный процесс обеспечу?
Сообщений [ 10 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Похожие темы
- Задать значение «Пустой строки»
- Удалить строки, где имеются повторяющиеся символы
- Высота строки в таблице
- Как отключить в таблице функцию добавления строки
- Как отвязать строки столбцов в таблице друг от друга?
- Не отображается нижняя граница каждой строки в таблице
- определение номера строки в таблице и подстановка в адрес ячейки
- Word как удалить текст в файле, закрыть и удалить макросом файл?
Удалить строки в таблице с пустой ячейкой
В современном мире необходимо постоянно совершенствовать свои знания, чтобы идти вперед. Это касается буквально всего, даже такой, казалось бы, простой и понятной операции, как работа с текстом. На портале о Microsoft Office Word вы узнаете про: word 2007 вставить как.
Microsoft Word предоставляет практически неограниченные возможности для самосовершенствования, нужно только ими правильно воспользоваться. На портале о Microsoft Office Word вы узнаете про: как вставить таблицу из ворда в эксель. На форуме Ворд Эксперт как раз и обсуждаются пути оптимизации работы, посредством написания различных шаблонов и макросов для редактирования или форматирования, построения таблиц, списков стилей. Наш сайт о Microsoft Office Word даст ответ про: для чего нужны непечатаемые знаки» в текстовом процессоре ms word.
Здесь вам подскажут оптимальные настройки программы в зависимости от стоящей задачи и помогут разобраться с тонкостями и отличиями различных версий. На портале о Microsoft Office Word вы узнаете про: ворд 2007 не печатает формулы. Для ленивых или очень занятых пользователей существуют готовые решения и возможность оставить заявку. Наш сайт о Microsoft Office Word даст ответ про: 1,25 см это сколько в ворде 2010.
страницы
- полезности word
- книги и программы
- о проекте
- стать автором
- реклама на сайте
- правовая информация
авторство
© 2006 — 2016, Word Expert
Авторские права на все материалы, опубликованные на сайте WordExpert.ru (включая текст, иллюстрации, фотографии, подборку, расположение и т.п.), принадлежат администрации Word Expert, если не указано иное.
Как в таблице удалить пустые строки в ворде

Практически каждый в наше время работает с компьютером в той или иной степени. И самой популярной программой и самой востребованной, является текстовый редактор. Бесспорно, большинство работают с редактором Microsoft Office Word. Часто при копировании текста из интернета и последующей вставкой возникает большое количество пустых абзацев. И удалять их вручную довольно длинное дело. Давайте ускорим работу до нескольких кликов мышкой.
Способ 1. На всякий случай рассмотрим, как удалить пустые строки вручную. Для примера я взял несколько абзацев из Википедии.

Порядок действий:
1. Ставим курсор перед первой буквой текста или после последней (это важно для правильной работы).
2. Нажимаем на кнопку «Заменить», которая находится на «Главная».

3. В поле «Найти» пишем ^0013 . У поле «Заменить на» пишем ^p.

4. Остается нажать на кнопку «Заменить все».
Программа выполнит поиск и замену пустых строк на обычные абзацы. В конце работы выведется сообщение с количеством выполненных замен.

Скриншот результата работы:
Способ 2 (рекомендуется). Данный способ предусматривает добавление макроса и последующее его использование.
Порядок действий:
1. Копируем макрос:
Sub delVoidParagraphs()
‘Удаление пустых абзацев в выделенном фрагменте
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = «^0013»
.Replacement.Text = «^p»
.MatchWildcards = True
.Format = False
.Forward = True
If Selection.Type = wdSelectionIP Then
.Wrap = wdFindContinue
Else
.Wrap = wdFindStop
End If
.Execute Replace:=wdReplaceAll
End With
Selection.Collapse direction:=wdCollapseStart
End Sub
2. Идем в «Вид → Макросы → Макросы».


3. Даем имя макросу (любое, без пробелов) и нажимаем «Создать».

4. Откроется окно визуального редактора Microsoft Visual Basic. Там уже будет текст с именем вашего макроса (у меня на скриншоте видно, что имя макроса delVoidParagraphs):
Sub delVoidParagraphs()
‘
‘ delVoidParagraphs Макрос
‘
‘

5. Удаляем данный код и заменяем на скопированный ранее.

6. Идем у «Вид → Макросы → Макросы», находим наш добавленный (delVoidParagraphs) и нажимаем «Выполнить». После окончания работы макроса все пустые строки будут заменены

Примеры протестированы на Windows 7 и текстовом редакторе Microsoft Office Word 2016.