Копирование листов в Microsoft Excel — одна из самых востребованных операций при работе с большими таблицами.hether вы создаёте резервную копию важных данных, тестируете формулы на дубликате или просто структурируете проект, умение быстро и без ошибок дублировать страницы сэкономит часы работы. Но даже опытные пользователи иногда сталкиваются с неожиданными проблемами: почему копия листа занимает в 2 раза больше места? Почему формулы ссылаются на оригинал? Как скопировать лист в другую книгу с сохранением форматирования?
В этой статье мы разберём 5 проверенных способов копирования листов — от элементарных до продвинутых, включая макросы и обход типичных ошибок. Вы узнаете, как дублировать страницы с данными, формулами, условным форматированием и даже с защитой ячеек. А в конце — FAQ с ответами на самые частые вопросы, которые пользователи задают на форумах.
Особое внимание уделим нюансам, о которых редко пишут в стандартных инструкциях. Например, копирование листа с именованными диапазонами автоматически создаёт их дубликаты с суффиксом "_2", что может сломать зависимые формулы в других таблицах. Или почему при копировании между книгами иногда пропадает шрифт Calibri — и как это исправить за 30 секунд.
1. Базовый способ: копирование листа перетаскиванием
Самый простой метод, который работает во всех версиях Excel — от 2010 до 2026. Подходит для быстрого дублирования листа внутри одной книги без дополнительных настроек.
Как это сделать:
- Откройте книгу и найдите в нижней части окна ярлыки листов (вкладки с названиями, например
Лист1,Лист2). - Наведите курсор на ярлык листа, который нужно скопировать. Зажмите левую кнопку мыши и удерживайте клавишу
Ctrl. - Не отпуская кнопки, перетащите лист влево или вправо — рядом появится значок плюса (+) и копия с названием "Имя_листа (2)".
- Отпустите кнопку мыши, затем клавишу
Ctrl.
✅ Плюсы метода:
- 🔹 Работает без интернета и дополнительных надстроек.
- 🔹 Сохраняет все данные, формулы, условное форматирование и даже комментарии.
- 🔹 Можно сразу переместить копию в нужное место (например, между
Лист2иЛист3).
⚠️ Внимание: Если у вас включён режимРазработчик → Защита листа, перетаскивание может не сработать. Сначала снимите защиту черезРецензирование → Снять защиту листа.
Этот способ идеален для одноразовых операций, но если вам нужно скопировать лист с определённым именем или в другую книгу, читайте дальше.
2. Копирование через контекстное меню (правый клик)
Более гибкий метод, который позволяет сразу переименовать копию и выбрать её расположение. Подходит для пользователей, которым нужно дублировать листы с конкретными настройками.
Пошаговая инструкция:
- Кликните правой кнопкой мыши по ярлыку листа (например,
Отчёт_2026). - В контекстном меню выберите пункт
Переместить/скопировать...(в английской версии —Move or Copy...). - В открывшемся окне:
- В выпадающем списке
В книгу:выберите текущую книгу (если копируете внутри неё) или другую открытую книгу. - В поле
Перед листом:укажите, куда вставить копию (например,Лист3). - Поставьте галочку напротив
Создать копию.
- В выпадающем списке
ОК — копия появится с названием "Имя_оригинала (2)".🔹 Секретный приём: Если вам нужно скопировать лист в новую книгу, сначала создайте её (Файл → Создать), затем в шаге 3 выберите эту книгу в списке В книгу:.
| Действие | Результат | Примечание |
|---|---|---|
Галочка Создать копию НЕ стоит |
Лист перемещается, а не копируется | Оригинал исчезает из исходной книги! |
| Копирование в закрытую книгу | Ошибка "Невозможно переместить..." |
Сначала откройте целевую книгу |
| Имя копии совпадает с существующим | Excel добавит _(3), _(4) и т.д. |
Можно переименовать сразу в окне Переместить/скопировать |
⚠️ Внимание: Если в оригинальном листе есть связанные данные (например, формулы вида=Лист1!A1), в копии ссылки автоматически обновятся на=Лист1 (2)!A1. Это может сломать зависимые вычисления!
☑️ Подготовка к копированию листа
3. Копирование листа в другую книгу (включая закрытые файлы)
Частая задача — перенести лист из одного файла в другой, например, для консолидации отчётов. Здесь есть нюансы: если просто перетащить лист, формулы могут "поломаться", а некоторые форматы (например, пользовательские стили ячеек) — не скопироваться.
Способ 1: Через контекстное меню (для открытых книг)
- Откройте обе книги (источник и приёмник).
- В исходной книге кликните правой кнопкой по листу →
Переместить/скопировать.... - В списке
В книгу:выберите целевую книгу. - Отметьте
Создать копиюи нажмитеОК. - 📊 Все данные и формулы (включая скрытые строки/столбцы).
- 🎨 Условное форматирование и стили ячеек.
- 🔒 Защита листа (если была включена).
- 📌 Именованные диапазоны (с суффиксом
_2). - 🚫 Настройки печати (разметка страницы, колонтитулы).
- 🚫 Скрытые листы (их нужно сначала сделать видимыми).
- 🚫 Данные в
Power QueryилиPower Pivot.
Способ 2: Для закрытых книг (через VBA)
Если целевая книга закрыта, стандартный метод не сработает. Используйте этот макрос:
Sub CopySheetToClosedWorkbook()
Dim sourceSheet As Worksheet
Dim targetPath As String
' Укажите имя листа для копирования
Set sourceSheet = ThisWorkbook.Sheets("Лист1")
' Укажите путь к целевой книге
targetPath = "C:\Путь\к\файлу.xlsx"
' Копирование
sourceSheet.Copy Before:=Workbooks.Open(targetPath).Sheets(1)
Workbooks(targetPath).Close SaveChanges:=True
End Sub
✅ Что копируется вместе с листом:
❌ Что НЕ копируется:
Почему при копировании в другую книгу пропадает шрифт Calibri?
Это связано с тем, что в целевой книге может быть отключён шрифт Calibri (например, если она создавалась на Mac или в старой версии Excel). Решение: откройте целевую книгу, перейдите в Файл → Параметры → Сохранение и убедитесь, что в списке "Шрифты для встраивания" отмечен Calibri.
4. Копирование листа с помощью VBA (для автоматизации)
Если вам нужно регулярно дублировать листы по одному шаблону (например, создавать ежемесячные отчёты), ручное копирование отнимет слишком много времени. Макросы в VBA решают эту проблему — достаточно один раз написать код, и потом запускать его в один клик.
Пример 1: Простое копирование с переименованием
Sub CopyAndRenameSheet()
Dim originalSheet As Worksheet
Dim newSheet As Worksheet
' Указываем имя оригинального листа
Set originalSheet = ThisWorkbook.Sheets("Шаблон")
' Копируем и переименовываем
originalSheet.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Set newSheet = ActiveSheet
newSheet.Name = "Отчёт_" & Format(Date, "mm_yyyy")
' Дополнительные настройки (опционально)
newSheet.Cells(1, 1).Value = "Скопировано автоматически: " & Now()
End Sub
Пример 2: Копирование с очисткой данных (для шаблонов)
Этот макрос создаёт копию листа, но удаляет все данные, оставляя только формулы и форматирование — идеально для ежемесячных отчётов:
Sub CopySheetClearData()
Dim templateSheet As Worksheet
Dim newSheet As Worksheet
Set templateSheet = ThisWorkbook.Sheets("Шаблон_отчёта")
templateSheet.Copy After:=templateSheet
Set newSheet = ActiveSheet
newSheet.Name = "Отчёт_" & Format(Date, "mmmm")
' Очищаем данные, но сохраняем формулы
On Error Resume Next ' Игнорируем ошибки при очистке защищённых ячеек
newSheet.UsedRange.SpecialCells(xlCellTypeConstants).ClearContents
On Error GoTo 0
End Sub
🔹 Как запустить макрос:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в модуль (через
Insert → Module). - Закройте редактор и нажмите
Alt + F8, выберите макрос и кликнитеВыполнить.
⚠️ Внимание: Если в книге отключены макросы, при открытии файла появится предупреждение о безопасности. Чтобы избежать этого, сохраните файл в формате.xlsm(с поддержкой макросов) и добавьте папку с файлом вДоверенные расположения(Файл → Параметры → Центр управления безопасностью).
5. Копирование листа с сохранением связей и именованных диапазонов
Одна из самых сложных задач — скопировать лист так, чтобы все ссылки на него в других таблицах автоматически обновились. Например, если у вас есть формула =Сумма(Отчёт!B2:B100) в другом листе, а вы копируете Отчёт как Отчёт_копия, ссылка не изменится — и формула будет брать данные с оригинала.
Решение 1: Ручное обновление ссылок
После копирования листа:
- Нажмите
Ctrl + H(замена). - В поле
Найти:введите старое имя листа (например,Отчёт). - В поле
Заменить на:введите новое имя (например,Отчёт_копия). - Нажмите
Заменить всё.
Решение 2: Использование функции ИНДЕКС вместо прямых ссылок
Вместо =Отчёт!A1 используйте:
=ИНДЕКС(Отчёт!A:A;1)
При копировании листа Отчёт формула автоматически подтянет данные с копии, если вы замените имя листа в аргументе.
Решение 3: VBA для автоматического обновления ссылок
Этот макрос копирует лист и заменяет все ссылки на него в книге:
Sub CopySheetAndUpdateReferences()
Dim originalName As String, newName As String
Dim ws As Worksheet, cell As Range
originalName = "Отчёт" ' Имя оригинального листа
newName = "Отчёт_копия" ' Имя копии
' Копируем лист
Sheets(originalName).Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = newName
' Обновляем ссылки в формулах
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> newName Then
For Each cell In ws.UsedRange
If cell.HasFormula Then
cell.Formula = Replace(cell.Formula, originalName & "!", newName & "!")
End If
Next cell
End If
Next ws
End Sub
✅ Когда это пригодится:
- 📈 При создании нескольких версий отчёта (например, по регионам).
- 🔄 При тестировании изменений в формулах на копии листа.
- 📊 При консолидации данных из нескольких похожих таблиц.
6. Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с проблемами при копировании листов. Вот самые распространённые ошибки и их решения:
Ошибка 1: Копия листа занимает в 2 раза больше места, чем оригинал
🔹 Причина: В копии остаются данные из истории изменений или скрытых строк/столбцов.
🔹 Решение:
- Перед копированием очистите историю:
Файл → Сведения → Книга → Очистить историю версий. - Удалите ненужные скрытые строки/столбцы: выделите весь лист (
Ctrl + A), затемГлавная → Формат → Скрыть/отобразить → Отобразить строки/столбцы.
Ошибка 2: Формулы в копии ссылаются на оригинал
🔹 Причина: В формулах используются абсолютные ссылки (например, =Лист1!$A$1).
🔹 Решение: Замените абсолютные ссылки на относительные (=Лист1!A1) или используйте макрос из раздела 5.
Ошибка 3: При копировании в другую книгу пропадает форматирование
🔹 Причина: В целевой книге отключены некоторые шрифты или стили.
🔹 Решение:
- Откройте целевую книгу и проверьте доступные шрифты:
Главная → Шрифт. - Если проблема с пользовательскими стилями, скопируйте их:
Главная → Стили → Объединить стили.
Ошибка 4: Нельзя скопировать лист с именем длинее 31 символа
🔹 Причина: Ограничение Excel — имена листов не могут превышать 31 символ.
🔹 Решение: Переименуйте оригинал перед копированием (например, с Отчёт_по_продажам_за_первый_квартал_2026 на Отчёт_1кв_2026).
| Ошибка | Причина | Быстрое решение |
|---|---|---|
| Копия листа пустая | Лист защищён или скрыт | Снимите защиту: Рецензирование → Снять защиту листа |
| Имя копии не меняется | В книге уже есть лист с таким именем | Удалите или переименуйте конфликтующий лист |
| Копирование занимает слишком долго | Слишком много данных или формул | Скопируйте лист в новую книгу, затем перенесите обратно |
7. Альтернативные способы: Power Query и надстройки
Если стандартные методы копирования не подходят (например, нужно скопировать только часть данных или автоматизировать процесс для сотен листов), рассмотрите эти инструменты:
Способ 1: Копирование через Power Query
Подходит для извлечения данных из листа без форматирования:
- Перейдите на лист-источник и выделите диапазон данных.
- Нажмите
Данные → Из таблицы/диапазона(в Excel 2016+). - В открывшемся окне Power Query нажмите
Закрыть и загрузить в.... - Выберите
Новый листи укажите, куда загрузить данные.
✅ Плюсы:
- 🔹 Можно отфильтровать данные перед копированием.
- 🔹 Сохраняется связь с источником (данные обновляются при изменении оригинала).
❌ Минусы:
- 🔸 Не копируются формулы, только значения.
- 🔸 Теряется форматирование ячеек.
Способ 2: Надстройка "Kutools for Excel"
Плагин Kutools предлагает расширенные функции копирования, например:
- 📋 Копирование нескольких листов за один клик.
- 🔄 Синхронизация данных между копиями.
- 📊 Копирование с сохранением сводных таблиц и графиков.
🔹 Как использовать:
- Установите надстройку (официальный сайт).
- Выделите листы для копирования (зажмите
Ctrlи кликните по ярлыкам). - Нажмите
Kutools → Листы → Копировать листы.
Способ 3: Копирование через Google Sheets
Если вам нужно скопировать лист в облако:
- Загрузите файл в Google Диск и откройте его в Google Sheets.
- Кликните правой кнопкой по листу →
Копировать лист. - Выберите
Новая книгаили существующую. - Скачайте результат обратно в
.xlsx.
Как скопировать лист с макросом, если VBA отключён?
Если в вашей версии Excel отключена поддержка макросов (например, в онлайн-версии), используйте обходной путь: 1) Сохраните файл как .xlsm на компьютере с полной версией Excel; 2) Запустите макрос; 3) Сохраните результат и загрузите обратно в облако.
FAQ: Ответы на частые вопросы
Можно ли скопировать лист из Excel в Google Sheets без потерь?
Да, но с оговорками:
- 🔹 Формулы
Excel(например,ВПР) автоматически преобразуются в аналогиGoogle Sheets(например,VLOOKUP). - 🔹 Условное форматирование копируется, но некоторые правила (например, с пользовательскими формулами) могут не работать.
- 🔹 Макросы и элементы
ActiveXне поддерживаются.
Как скопировать:
- В Excel:
Файл → Экспорт → Изменить тип файла → Таблица Google (.gsheet). - Откройте файл в Google Sheets и скопируйте нужный лист в другую книгу.
Почему при копировании листа формулы возвращают ошибку #ССЫЛКА?
Это происходит, если:
- 🔸 В формулах использовались структурированные ссылки на таблицы (например,
=Таблица1[Столбец1]), а имя таблицы не скопировалось. - 🔸 Лист, на который ссылается формула, был удалён или переименован.
- 🔸 В копии отсутствуют данные, на которые ссылается формула (например, скрытые строки).
Решение:
- Проверьте все структурированные ссылки:
Формулы → Зависимости формул → Влияющие ячейки. - Если проблема в имени таблицы, переименуйте её в копии листа:
Конструктор → Свойства → Имя таблицы.
Как скопировать лист вместе с настройками печати?
Стандартное копирование не сохраняет параметры печати (поля, колонтитулы, разрывы страниц). Чтобы перенести их:
- Скопируйте лист стандартным способом (см. раздел 2).
- На копии листа перейдите в
Разметка страницы → Параметры страницы. - Вручную перенесите настройки с оригинала (или используйте макрос ниже).
Макрос для копирования настроек печати:
Sub CopyPageSetup()
Dim originalSheet As Worksheet, newSheet As Worksheet
Set originalSheet = Sheets("Оригинал")
Set newSheet = Sheets("Копия")
' Копируем настройки печати
newSheet.PageSetup.Orientation = originalSheet.PageSetup.Orientation
newSheet.PageSetup.PaperSize = originalSheet.PageSetup.PaperSize
newSheet.PageSetup.Zoom = originalSheet.PageSetup.Zoom
' ... (добавьте другие параметры по аналогии)
End Sub
Можно ли скопировать лист на другой компьютер без отправки файла?
Да, есть 3 способа:
- Через OneDrive/Google Диск:
- Загрузите файл в облако.
- Откройте его на другом ПК и скопируйте лист в локальную книгу.
- Экспортируйте лист в
PDFилиCSV(Файл → Экспорт). - На другом ПК импортируйте данные обратно в Excel.
❌ Минус: Теряются формулы и форматирование.
Этот код отправит лист по email как вложение:
Sub SendSheetByEmail()
Dim OutApp As Object, OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
' Копируем лист в новую книгу
Sheets("Лист1").Copy
ActiveWorkbook.SaveAs "C:\Temp\Копия_листа.xlsx"
ActiveWorkbook.Close
' Отправляем по почте
With OutMail
.To = "email@example.com"
.Subject = "Копия листа Excel"
.Body = "Вложение содержит скопированный лист."
.Attachments.Add "C:\Temp\Копия_листа.xlsx"
.Send ' или .Display для ручной отправки
End With
End Sub
Как скопировать лист так, чтобы в копии обновились все даты на текущий месяц?
Если вам нужно скопировать шаблон отчёта и автоматически обновить в нём даты (например, с "января 2026" на "февраль 2026"), используйте этот макрос:
Sub CopySheetUpdateDates()
Dim originalSheet As Worksheet, newSheet As Worksheet
Dim cell As Range, newDate As Date
' Копируем лист
Set originalSheet = Sheets("Шаблон_отчёта")
originalSheet.Copy After:=Sheets(Sheets.Count)
Set newSheet = ActiveSheet
newSheet.Name = "Отчёт_" & Format(Date, "mmmm_yyyy")
' Обновляем даты
newDate = DateSerial(Year(Date), Month(Date), 1) ' Первое число текущего месяца
For Each cell In newSheet.UsedRange
If IsDate(cell.Value) Then
cell.Value = DateSerial(Year(newDate), Month(newDate), Day(cell.Value))
End If
Next cell
End Sub
Как работает:
- Копирует лист
Шаблон_отчёта. - Заменяет все даты в ячейках на текущий месяц, сохраняя число (например,
15.01.2026→15.02.2026). - Переименовывает лист по шаблону
Отчёт_месяц_год.