Реверс в Excel: как перевернуть строку, столбец или таблицу за 2 минуты

Если вам нужно перевернуть порядок ячеек в строке, столбце или целой таблице Excel — не спешите вручную переписывать данные. В 90% случаев задача решается стандартными инструментами программы без макросов. Например, строку А1:E1 с значениями «1, 2, 3, 4, 5» можно развернуть до «5, 4, 3, 2, 1» за 3 клика через специальную вставку. А для автоматического реверса при изменении исходных данных подойдут формулы ИНДЕКС или ПОИСКПОЗ.

Ошибка многих пользователей — попытка использовать сортировку по убыванию (Данные → Сортировка). Этот метод работает только для числовых данных и ломает исходный порядок. Мы покажем 5 проверенных способов, включая универсальный метод для текста, чисел и дат, который сохраняет форматирование ячеек. Все инструкции актуальны для Excel 2010–2023 и Office 365 (включая веб-версию).

1. Быстрый реверс через специальную вставку (без формул)

Самый простой способ — использовать транспонирование с разворотом. Он подходит для одноразового реверса строк или столбцов длиной до 1000 ячеек. Алгоритм:

  1. Выделите исходные данные (например, строку A1:D1 с значениями «Яблоко, Груша, Банан, Апельсин»).
  2. Скопируйте их (Ctrl+C).
  3. Кликните правой кнопкой по пустой ячейке, где должен появиться результат (например, A3).
  4. В контекстном меню выберите Специальная вставка → Транспонировать.
  5. Теперь выделите транспонированные данные, снова скопируйте их (Ctrl+C).
  6. Кликните правой кнопкой по конечной ячейке (например, E1) и выберите Специальная вставка → Значения → ОК.
  7. Удалите вспомогательный транспонированный столбец.

Результат: строка «Яблоко, Груша, Банан, Апельсин» превратится в «Апельсин, Банан, Груша, Яблоко». Метод работает и для столбцов — просто транспонируйте их дважды.

Исходные данные не содержат объединённых ячеек|

В буфере обмена нет других данных (чистый Ctrl+C)|

Конечная область вставки пустая и достаточного размера|

Форматирование исходных ячеек не критично (оно не сохранится)

-->

⚠️ Внимание: Этот способ не сохраняет форматирование (цвет текста, границы, условное форматирование). Для сохранения оформления используйте метод с формулами (раздел 3).

2. Реверс с помощью функции СЧЁТЗ и ИНДЕКС (динамический)

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

=ИНДЕКС($A$1:$D$1; СЧЁТЗ($A$1:$D$1)+1-CТРОКА(A1))

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

  • 🔹 СЧЁТЗ($A$1:$D$1) считает количество непустых ячеек в диапазоне (в нашем случае 4).
  • 🔹 СТРОКА(A1) возвращает номер строки (здесь 1).
  • 🔹 Формула СЧЁТЗ+1-СТРОКА генерирует последовательность 4, 3, 2, 1.
  • 🔹 ИНДЕКС извлекает значение из исходного диапазона по сгенерированному номеру.

Чтобы развернуть весь диапазон:

  1. Введите формулу в первую ячейку результата (например, A3).
  2. Растяните её вправо (для строки) или вниз (для столбца) на количество ячеек, равное исходному диапазону.
Исходные данные (A1:D1)ФормулаРезультат (A3:D3)
Яблоко=ИНДЕКС($A$1:$D$1;4+1-1)Апельсин
Груша=ИНДЕКС($A$1:$D$1;4+1-2)Банан
Банан=ИНДЕКС($A$1:$D$1;4+1-3)Груша
Апельсин=ИНДЕКС($A$1:$D$1;4+1-4)Яблоко

3. Реверс с сохранением форматирования (через VBA)

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

Откройте редактор VBA (Alt+F11), вставьте новый модуль (Insert → Module) и добавьте код:

Sub ReverseRange()

Dim rng As Range, arr() As Variant, i As Long, j As Long

Set rng = Selection

ReDim arr(1 To rng.Columns.Count, 1 To rng.Rows.Count)

' Копируем данные и форматирование в массив

For i = 1 To rng.Columns.Count

For j = 1 To rng.Rows.Count

arr(i, j) = rng.Cells(j, i).Value

rng.Cells(j, i).Copy

rng.Cells(rng.Rows.Count - j + 1, rng.Columns.Count - i + 1).PasteSpecial xlPasteFormats

Next j

Next i

' Вставляем развёрнутые данные

For i = 1 To rng.Columns.Count

For j = 1 To rng.Rows.Count

rng.Cells(j, i).Value = arr(rng.Columns.Count - i + 1, rng.Rows.Count - j + 1)

Next j

Next i

Application.CutCopyMode = False

End Sub

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

  1. Выделите диапазон для реверса (например, A1:D5).
  2. Запустите макрос (Alt+F8 → ReverseRange → Выполнить).
⚠️ Внимание: Макрос заменяет исходные данные. Сначала сделайте резервную копию таблицы (Ctrl+C на другой лист). В Excel Online VBA не работает — используйте десктопную версию.

Специальная вставка|

Формулы ИНДЕКС/СЧЁТЗ|

Макрос VBA|

Другие методы-->

4. Реверс таблицы целиком (строки + столбцы)

Чтобы развернуть всю таблицу (поменять местами первую и последнюю строки, первый и последний столбцы), комбинируйте транспонирование с индексацией. Например, для диапазона A1:C3:

=ИНДЕКС($A$1:$C$3; СЧЁТЗ($A$1:$A$3)+1-СТРОКА(A1); СЧЁТЗ($A$1:$C$1)+1-СТОЛБЕЦ(A1))

Введите формулу в A5 и растяните на диапазон A5:C7. Результат:

  • 🔹 Первая строка исходной таблицы станет последней.
  • 🔹 Первый столбец станет последним.
  • 🔹 Ячейка A1 поменяется местами с C3, A2 — с C2 и т.д.

Для автоматизации создайте именованный диапазон:

  1. Выделите исходную таблицу (например, A1:C3).
  2. Перейдите в Формулы → Присвоить имя.
  3. Введите имя (например, MyTable) и нажмите OK.
  4. Теперь используйте формулу:
    =ИНДЕКС(MyTable; СЧЁТЗ(MyTable)+1-СТРОКА(A1); СЧЁТЗ(ИНДЕКС(MyTable;;;1))+1-СТОЛБЕЦ(A1))

5. Реверс с удалением пустых ячеек

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

=ЕСЛИОШИБКА(ИНДЕКС($A$1:$D$1; НАИБОЛЬШИЙ(ЕСЛИ($A$1:$D$1<>""; СТОЛБЕЦ($A$1:$D$1)-МИН(СТОЛБЕЦ($A$1:$D$1))+1); СТРОКА(A1))); "")

Эта формула:

  • 🔹 Проверяет непустые ячейки в диапазоне $A$1:$D$1.
  • 🔹 Присваивает им порядковые номера (1, 2, 3...).
  • 🔹 Функция НАИБОЛЬШИЙ извлекает номера в обратном порядке.
  • 🔹 ИНДЕКС возвращает значения по этим номерам.

Для Excel 2019 и старше формула вводится как массивная (Ctrl+Shift+Enter). В Office 365 достаточно нажать Enter.

Как развернуть данные с учётом фильтра

Если таблица отфильтрована, стандартные методы реверса учитывают все строки, включая скрытые. Чтобы развернуть только видимые данные:

  1. Выделите отфильтрованный диапазон.
  2. Скопируйте его (Ctrl+C).
  3. Вставьте на новый лист через Специальная вставка → Значения.
  4. Примените любой метод реверса к вставленным данным.

6. Частые ошибки и как их избежать

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

ОшибкаПричинаРешение
#ССЫЛКА! в формулахНеверно указан диапазон в ИНДЕКС.Проверьте абсолютные ссылки ($A$1:$D$1 вместо A1:D1).
Пустые ячейки в результатеИсходные данные содержат скрытые символы (пробелы, переносы).Очистите ячейки функцией СЖПРОБЕЛЫ.
Макрос не работаетОтключены макросы в настройках безопасности.Перейдите в Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы.
Форматирование слетаетИспользован метод специальной вставки без форматирования.Примените макрос из раздела 3 или вручную скопируйте формат (Главная → Формат по образцу).

Ещё одна распространённая проблема — реверс дат. Если в ячейках даты в формате «дд.мм.гггг», после разворота они могут отобразиться как числа (например, «44197» вместо «01.01.2021»). Чтобы исправить:

  1. Выделите развёрнутые ячейки с датами.
  2. Нажмите Ctrl+1 (формат ячеек).
  3. Выберите категорию Дата и нужный формат.

FAQ: Ответы на частые вопросы

Можно ли развернуть данные в Excel Online?

Да, но с ограничениями:

  • 🔹 Работают методы со специальной вставкой и формулами.
  • 🔹 VBA и Power Query недоступны.
  • 🔹 Для динамического реверса используйте =ИНДЕКС + СЧЁТЗ (раздел 2).
Как развернуть только выделенные ячейки (не весь столбец/строку)?

Если нужно развернуть несплошной диапазон (например, ячейки A1, A3, A5):

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

Для автоматизации используйте макрос:

Sub ReverseSelected()

Dim cell As Range, arr() As Variant, i As Long

ReDim arr(1 To Selection.Areas.Count)

For Each cell In Selection

i = i + 1

arr(i) = cell.Value

Next cell

For i = 1 To Selection.Areas.Count

Selection.Areas(i).Value = arr(Selection.Areas.Count + 1 - i)

Next i

End Sub

Почему после реверса формулы показывают #ЗНАЧ?, а не значения?

Ошибка #ЗНАЧ! возникает, если:

  • 🔹 В диапазоне есть объединённые ячейки — разъедините их (Главная → Объединить и поместить в центре).
  • 🔹 Формула реверса применена к ячейкам с ошибками (например, #ДЕЛ/0!). Исправьте исходные данные.
  • 🔹 Используется неверный разделитель в формулах (точка с запятой ; вместо запятой , или наоборот). Проверьте региональные настройки (Файл → Параметры → Язык → Региональные параметры).
Как развернуть данные в Google Таблицах?

В Google Sheets работают те же принципы, но с поправками:

  • 🔹 Для реверса строки используйте:
    =INDEX($A$1:$D$1; COUNTA($A$1:$D$1)+1-COLUMN(A1))
  • 🔹 Специальная вставка с транспонированием доступна через Правка → Специальная вставка → Транспонировать.
  • 🔹 Макросы пишутся на Google Apps Script (аналог VBA).

Отличие: в Google Таблицах нет функции СЧЁТЗ — используйте COUNTA.

Можно ли отменить реверс?

Да, если:

  • 🔹 Вы использовали специальную вставку — нажмите Ctrl+Z.
  • 🔹 Применили формулы — просто удалите их.
  • 🔹 Запустили макрос — восстановите данные из резервной копии или повторите реверс (он вернёт исходный порядок).

Если исходные данные утеряны, проверьте журнал изменений (Файл → Сведения → Управление книгой → Журнал изменений) — в Excel 365 он сохраняет историю за последние 30 дней.