Как распечатать только выбранные строки в Excel: все рабочие методы

Печать выборочных строк в Microsoft Excel — задача, с которой сталкивается каждый второй пользователь при работе с большими таблицами. Нужно отправить на принтер только несколько позиций из списка в 500 строк? Или распечатать отчёт с данными за конкретный квартал, исключив остальные месяцы? В этой статье разберём 5 проверенных способов, как печатать только нужные строки — от элементарных до продвинутых, включая макросы для автоматизации.

Важно понимать: Excel по умолчанию печает весь лист или выделенную область, но не всегда корректно обрабатывает разрозненные фрагменты. Мы покажем, как обойти это ограничение с помощью встроенных инструментов (Область печати, Фильтры), а также раскроем секреты работы с скрытыми строками и VBA-кодом для опытных пользователей. Все методы протестированы на Excel 2019-2026 и Office 365, но большинство подойдёт и для старых версий (2013/2016).

Если вы торопитесь — воспользуйтесь быстрым способом в 3 клика. Для сложных задач (например, печать строк по условию) читайте раздел про автоматизацию через VBA.

Почему стандартная печать не работает с выборочными строками

Проблема кроется в логике Excel: программа оптимизирована для печати сплошных диапазонов. Когда вы выделяете несколько несмежных строк (например, 5-ю, 12-ю и 20-ю), а затем нажимаете Ctrl+P, Excel игнорирует разрывы и печатает всю область между первой и последней выделенной строкой. Это поведение заложено в ядро программы и не менялось с Excel 2007.

Вот что происходит"под капотом":

  • 🔹 Вы выделяете строки 3:3, 7:7 и 10:12.
  • 🔹 Excel определяет минимальный и максимальный адреса — в данном случае 3:12.
  • 🔹 На печать отправляется весь диапазон, включая пустые строки и данные, которые вы не хотели печатать.

Единственный способ обойти это — создать отдельные области печати или скрыть ненужные строки перед выводом на принтер. Далее мы покажем, как это сделать правильно.

📊 Как часто вы печатаете таблицы из Excel?
Ежедневно
Несколько раз в неделю
Редко, по необходимости
Никогда

Способ 1: Быстрая печать выделенных строк (3 клика)

Самый простой метод — использовать область печати. Он подходит, если нужно распечатать несколько смежных строк (например, с 5-й по 10-ю) или несмежные блоки (например, строки 2, 6-8 и 15).

Инструкция:

  1. Выделите нужные строки, удерживая Ctrl (для несмежных строк) или просто протяните курсор (для смежных).
  2. Перейдите на вкладку Разметка страницы → нажмите Область печатиЗадать.
  3. Откройте предварительный просмотр (Ctrl+P) и нажмите Печать.

⚠️ Внимание: Если после установки области печати вы измените данные в таблице, область не обновится автоматически. Придётся задавать её заново или использовать метод со скрытием строк.

Выделены ТОЛЬКО нужные строки|

Установлена область печати|

Предварительный просмотр показывает корректные данные|

На принтере достаточно бумаги-->

Способ 2: Печать через скрытие ненужных строк

Этот метод идеален, когда нужно исключить из печати строк, оставив лишь несколько. Например, у вас таблица на 200 строк, а распечатать требуется только 10. Скрывать ненужные строки быстрее, чем выделять нужные.

Как это работает:

  1. Выделите строки, которые НЕ нужно печатать.
  2. Кликните правой кнопкой → Скрыть (или нажмите Ctrl+9).
  3. Установите область печати: Разметка страницы → Область печати → Задать.
  4. Распечатайте документ (Ctrl+P).
  5. После печати верните скрытые строки: выделите соседние видимые строки → правый клик → Отменить скрытие.

💡 Полезный совет: Если строк много, используйте фильтр для быстрого скрытия. Например, отфильтруйте данные по значению в столбце, а затем скройте все строки, кроме видимых.

Как скрыть строки с помощью фильтра

1. Выделите заголовки столбцов (строку 1).

2. Нажмите Данные → Фильтр.

3. Кликните на стрелку в столбце, по которому хотите фильтровать (например,"Статус").

4. Снимите все галочки, кроме нужного значения (например,"Выполнено").

5. Скрытые строки автоматически исключатся из печати.

Способ 3: Печать отфильтрованных строк (для больших таблиц)

Фильтры в Excel — мощный инструмент для работы с данными, и их можно использовать для выборочной печати. Этот метод подходит, когда строки для печати объединяет общий признак (например, дата, категория, статус).

Пример: у вас таблица заказов, и нужно распечатать только те, где статус"Оплачено". Вот как это сделать:

  1. Активируйте фильтр: Данные → Фильтр (или нажмите Ctrl+Shift+L).
  2. В столбце со статусом кликните на стрелку → снимите все галочки, кроме"Оплачено" → OK.
  3. Установите область печати: Разметка страницы → Область печати → Задать.
  4. Распечатайте (Ctrl+P) и не забудьте после этого сбросить фильтр (кнопка Очистить в меню фильтра).

⚠️ Внимание: Если в таблице есть промежуточные итоги или сводные таблицы, фильтр может работать некорректно. В этом случае используйте метод со скриптами VBA.

Преимущества метода:

  • 🔹 Не нужно вручную выделять строки.
  • 🔹 Можно печатать данные по нескольким критериям (например,"Оплачено" +"Дата > 01.01.2026").
  • 🔹 Подходит для таблиц с тысячами строк.

Способ 4: Автоматизация через VBA (для продвинутых)

Если вам регулярно нужно печатать строки по условию (например, все строки, где значение в столбце B больше 1000), стоит автоматизировать процесс с помощью макроса VBA. Этот метод требует минимальных знаний программирования, но экономит часы времени.

Пример кода для печати строк, где в столбце C значение равно"Да":

Sub PrintSelectedRows

Dim ws As Worksheet

Dim rng As Range, cell As Range

Dim printRange As Range

Set ws = ActiveSheet

Set rng = ws.UsedRange

For Each cell In rng.Columns("C").Cells

If cell.Value ="Да" Then

If printRange Is Nothing Then

Set printRange = cell.EntireRow

Else

Set printRange = Union(printRange, cell.EntireRow)

End If

End If

Next cell

If Not printRange Is Nothing Then

printRange.PrintOut

Else

MsgBox"Нет строк для печати!", vbExclamation

End If

End Sub

Как использовать этот код:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль: Вставка → Модуль.
  3. Закройте редактор и запустите макрос: Разработчик → Макросы (или Alt+F8).

💡 Совет: Чтобы макрос работал быстрее на больших таблицах, отключите обновление экрана в начале кода:

Application.ScreenUpdating = False

и включите в конце:

Application.ScreenUpdating = True

Сравнение методов: какой выбрать?

Чтобы выбрать оптимальный способ, оцените свои задачи по этим критериям:

Метод Сложность Подходит для Ограничения
Область печати Небольших таблиц, разовых задач Неудобно для несмежных строк
Скрытие строк ⭐⭐ Таблиц со многими ненужными строками Нужно помнить о возврате скрытых строк
Фильтры ⭐⭐ Данных с общим признаком Не работает со сложными условиями
VBA ⭐⭐⭐ Регулярных задач, больших таблиц Требует настройки макросов

🔹 Для одноразовых задач используйте область печати или скрытие строк.

🔹 Для регулярной печати по условию (например, еженедельные отчёты) настройте макрос VBA.

🔹 Для больших таблиц с повторяющимися критериями оптимальны фильтры.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel иногда сталкиваются с проблемами при выборочной печати. Вот самые распространённые ошибки и их решения:

  • 🚫 Печатаются пустые страницы: Проверьте, не установлены ли разрывы страниц вручную (Вид → Разметка страницы). Удалите их, если они мешают.
  • 🚫 Некорректные номера страниц: Если используете скрытые строки, сбросьте нумерацию в Разметка страницы → Колонтитулы.
  • 🚫 Макрос не работает: Убедитесь, что в настройках безопасности разрешено выполнение макросов (Файл → Параметры → Центр управления безопасностью).
  • 🚫 Фильтр не применяется: Проверьте, что данные в столбце имеют одинаковый формат (например, даты не смешаны с текстом).

⚠️ Внимание: Если вы печатаете таблицу с объединёнными ячейками, некоторые методы (например, скрытие строк) могут нарушить структуру документа. В этом случае дублируйте данные на отдельном листе перед печатью.

Ещё одна частая проблема — несовпадение того, что видно на экране, и того, что печатается. Это происходит из-за:

  • 🔹 Настроек масштаба (Разметка страницы → Масштаб).
  • 🔹 Полей страницы (уменьшите их в Разметка страницы → Поля).
  • 🔹 Скрытых столбцов (они могут"съедать" место на странице).

Частые вопросы

Можно ли печатать выбранные строки на разных листах?

Да, но для этого нужно:

  1. Скопировать нужные строки на отдельные листы.
  2. На каждом листе установить область печати.
  3. В предварительном просмотре (Ctrl+P) выбрать опцию"Печатать весь документ".

Или используйте VBA для автоматического распределения строк по листам.

Почему при печати пропали границы ячеек?

Это происходит, если в настройках печати отключён параметр Печатать линии сетки. Чтобы вернуть границы:

  1. Перейдите в Разметка страницы → Лист → Печатать.
  2. Поставьте галочку напротив Линии сетки.

Если границы были нарисованы вручную (Главная → Границы), убедитесь, что они не белого цвета (проверьте в Формат ячеек → Граница).

Как распечатать только видимые строки после фильтрации?

По умолчанию Excel печатает все строки, даже скрытые фильтром. Чтобы печатать только видимые:

  1. Установите область печати (Разметка страницы → Область печати → Задать).
  2. В предварительном просмотре (Ctrl+P) нажмите НастройкиПечатать только видимые ячейки.
Можно ли сохранить настройки печати для повторного использования?

Да, есть два способа:

  1. Шаблон: Сохраните файл как шаблон (.xltx) с настроенной областью печати.
  2. Макрос: Запишите макрос, который будет автоматически устанавливать область печати и параметры страницы.

Пример кода для сохранения настроек:

Sub SavePrintSettings

ActiveSheet.PageSetup.PrintArea ="$A$1:$D$100"' Диапазон

ActiveSheet.PageSetup.Orientation = xlLandscape' Альбомная

ActiveSheet.PageSetup.Zoom = 85' Масштаб

End Sub

Как печатать строки с определённым цветом фона?

Для этого нужен VBA-скрипт, который будет проверять цвет ячеек. Пример кода для печати строк с жёлтым фоном:

Sub PrintColoredRows

Dim rng As Range, cell As Range, printRange As Range

Set rng = ActiveSheet.UsedRange

For Each cell In rng.Columns(1).Cells' Проверяем столбец A

If cell.Interior.Color = RGB(255, 255, 0) Then' Жёлтый цвет

If printRange Is Nothing Then

Set printRange = cell.EntireRow

Else

Set printRange = Union(printRange, cell.EntireRow)

End If

End If

Next cell

If Not printRange Is Nothing Then printRange.PrintOut

End Sub

Чтобы узнать код цвета, выделите ячейку и запустите в редакторе VBA:

MsgBox Selection.Interior.Color