Как перевернуть буквы в Excel: от простых формул до автоматизации VBA

Задача перевернуть текст в Microsoft Excel задом наперёд — например, преобразовать «Привет» в «тевирП» — возникает реже, чем стандартные операции с данными, но может быть критичной для специфических задач. Это актуально при работе с логами, шифрованием простых данных, лингвистическим анализом или даже созданием головоломок. В отличие от Word или текстовых редакторов, где переворот текста выполняется в пару кликов, в Excel для этого требуются формулы, макросы или сторонние надстройки.

Многие пользователи ошибочно пытаются найти функцию «Перевернуть текст» в меню Главная → Редактирование, но её там нет. Вместо этого придётся использовать комбинацию текстовых функций или написать короткий скрипт на VBA. В этой статье мы разберём 5 рабочих методов — от элементарных для новичков до продвинутых для автоматизации рутинных задач. А ещё вы узнаете, как избежать типичных ошибок при реверсе текста с кириллицей, цифрами и спецсимволами.

———

1. Переворот текста с помощью формулы (без VBA)

Самый универсальный способ — использовать комбинацию функций ДЛСТР, ПСТР и СТРОКА. Он работает во всех версиях Excel (включая Excel 365 и Google Sheets) и не требует включения макросов.

Формула для ячейки A1:

=СЦЕПИТЬ(ПОВТОР(" ";ДЛСТР(A1))-ПОИСК(0;ПОВТОР(" ";ДЛСТР(A1))&СТРОКА(1:99);1);ПСТР(A1;ПОИСК(0;ПОВТОР(" ";ДЛСТР(A1))&СТРОКА(1:99);1);1))
⚠️ Внимание: В Excel 2019 и новее вместо СЦЕПИТЬ используйте ТЕКСТСЦЕП или CONCAT (в английской версии). Формула массива — после ввода нажмите Ctrl+Shift+Enter.

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

  • 🔹 ДЛСТР(A1) — определяет длину строки.
  • 🔹 ПОВТОР(" ";ДЛСТР(A1)) — создаёт строку из пробелов той же длины.
  • 🔹 СТРОКА(1:99) — генерирует массив чисел от 1 до 99 (максимальная длина строки в ячейке).
  • 🔹 ПОИСК(0;...) — находит позицию каждого символа с конца строки.
  • 🔹 ПСТР — извлекает символы в обратном порядке.

Для упрощения можно использовать упрощённую версию формулы (только для строк до 255 символов):

=ПСТР($A1;ДЛСТР($A1)-СТРОКА(НЕПРЯМ($A$1:$A$255));1)
Введите её как формулу массива (Ctrl+Shift+Enter) и протяните вниз.
📊 Какой версией Excel вы пользуетесь?
Excel 2010–2016
Excel 2019–2021
Excel 365 (подписка)
Google Sheets
LibreOffice Calc

2. Функция REVERSETEXT в Power Query

Если вам нужно перевернуть большой массив данных (например, столбец из 10 000 строк), удобнее использовать Power Query — инструмент для преобразования данных, встроенный в Excel 2016+.

Пошаговая инструкция:

  1. Выделите исходный диапазон с текстом.
  2. Перейдите на вкладку ДанныеИз таблицы/диапазонаExcel 2016–2019 или Получить данные → Из таблицы/диапазона в Excel 365).
  3. В открывшемся редакторе Power Query выделите столбец с текстом.
  4. Перейдите на вкладку Добавить столбецПользовательский столбец.
  5. Введите имя нового столбца (например, «Перевёрнутый текст») и формулу:
    = Text.Reverse([Column1])
    Замените Column1 на название вашего столбца.
  6. Нажмите ОКЗакрыть и загрузить.

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

  • 🚀 Обрабатывает миллионы строк без замедления.
  • 🔄 Автоматически обновляется при изменении исходных данных.
  • 📊 Сохраняет форматирование таблицы.

3. Макрос VBA для переворота текста

Для пользователей, которые часто работают с перевёрнутым текстом, удобнее создать пользовательскую функцию (UDF) на VBA. Она будет доступна как стандартная функция Excel.

Инструкция:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В меню выберите Insert → Module.
  3. Вставьте следующий код:
    Function REVERSETEXT(rng As Range) As String
    

    Dim str As String, i As Integer

    str = rng.Value

    For i = Len(str) To 1 Step -1

    REVERSETEXT = REVERSETEXT & Mid(str, i, 1)

    Next i

    End Function

  4. Закройте редактор и вернитесь в Excel.
  5. Теперь в любой ячейке можно использовать формулу:
    =REVERSETEXT(A1)

Особенности макроса:

  • 🔧 Работает с кириллицей, латиницей, цифрами и спецсимволами.
  • ⚡ Быстрее формул при обработке больших объёмов данных.
  • 🔒 Требует разрешения на выполнение макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы).
⚠️ Внимание: Если в тексте есть объединённые ячейки или переносы строк (Alt+Enter), макрос может вернуть ошибку. Предварительно разделите текст по столбцам (Данные → Текст по столбцам).

Включить макросы в настройках Excel|Создать резервную копию файла|Проверить текст на спецсимволы (табуляции, переносы)|Тестировать макрос на копии данных-->

4. Переворот текста с учётом регистра

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

Формула для Excel 365 (динамический массив):

=СЦЕПИТЬ(СИМВОЛ(КОДСИМВ(ПСТР(A1;ДЛСТР(A1)-ПОСЛЕДОВ(0;ДЛСТР(A1);-1)+1;1)))))

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

Function REVERSETEXT_CASE(rng As Range) As String

Dim str As String, i As Integer, char As String

str = rng.Value

For i = Len(str) To 1 Step -1

char = Mid(str, i, 1)

If i Mod 2 = 0 Then

REVERSETEXT_CASE = REVERSETEXT_CASE & LCase(char)

Else

REVERSETEXT_CASE = REVERSETEXT_CASE & UCase(char)

End If

Next i

End Function

Сравнение методов:

Метод Сохраняет регистр? Макс. длина строки Требует VBA?
Стандартная формула ❌ Нет 32 767 символов ❌ Нет
Power Query ✅ Да Неограничено ❌ Нет
VBA (базовый) ❌ Нет Неограничено ✅ Да
VBA (с учётом регистра) ✅ Да Неограничено ✅ Да

5. Переворот текста в Google Sheets

В Google Таблицах нет встроенной функции для реверса текста, но можно использовать App Script (аналог VBA) или формулу на основе REGEX.

Способ 1: Формула (для строк до 50 символов):

=ARRAYFORMULA(CONCATENATE(MID(A1;LEN(A1)-ROW(INDIRECT("1:"&LEN(A1)))+1;1))))

Способ 2: Пользовательская функция App Script:

  1. Откройте Расширения → Apps Script.
  2. Вставьте код:
    function REVERSETEXT(input) {
    

    return input.split("").reverse().join("");

    }

  3. Сохраните проект и обновите таблицу.
  4. Теперь используйте формулу:
    =REVERSETEXT(A1)

Ограничения Google Sheets:

  • 🐢 Формулы работают медленнее, чем в Excel.
  • 🔄 App Script требует подтверждения прав при первом запуске.
  • 📵 Нет поддержки Power Query.
Почему в Google Sheets нет стандартной функции REVERSE?

Google Таблицы ориентированы на совместную работу и облачные вычисления, поэтому в них упрощены некоторые текстовые функции. Разработчики рекомендуют использовать App Script для нестандартных задач, чтобы не перегружать интерфейс.

6. Переворот текста с учётом пробелов и знаков препинания

Если нужно перевернуть слова в предложении (например, «Привет мир»«мир Привет»), а не буквы, используйте формулу с разделением по пробелам:

Формула для Excel 365:

=ТЕКСТПОСЛЕ(" ";СЦЕПИТЬ(" ";ПОСЛЕДОВ(;;;ТЕКСТРАЗД(A1;;;" "))))

Для переворота букв внутри каждого слова (например, «Привет мир»«тевирП рим») комбинируйте функции:

=СЦЕПИТЬ(ПОВТОР(" ";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))+1)-ПОИСК(0;ПОВТОР(" ";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))+1)&СТРОКА(1:99);1);ПСТР(A1;ПОИСК(" ";A1&" ";ПОИСК(0;ПОВТОР(" ";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))+1)&СТРОКА(1:99);1))+1;ПОИСК(" ";A1&" ";ПОИСК(0;ПОВТОР(" ";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))+1)&СТРОКА(1:99);1)+1)-ПОИСК(" ";A1&" ";ПОИСК(0;ПОВТОР(" ";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))+1)&СТРОКА(1:99);1))-1)))
⚠️ Внимание: Эта формула не обрабатывает знаки препинания (запятые, точки). Для их корректного переворота используйте VBA или Power Query.

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

При работе с перевёрнутым текстом в Excel пользователи сталкиваются с несколькими распространёнными проблемами:

Ошибка 1: #ЗНАЧ! в формулах массива

  • 🔹 Причина: Формула введена не как массив (Ctrl+Shift+Enter не нажат).
  • 🔹 Решение: Повторите ввод формулы и завершите комбинацией клавиш.

Ошибка 2: Неправильная кодировка символов

  • 🔹 Причина: В тексте есть непечатаемые символы (например, CHAR(160) — неразрывный пробел).
  • 🔹 Решение: Очистите текст функцией =ПЕЧСИМВ(ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ")).

Ошибка 3: Макрос не работает с кириллицей

  • 🔹 Причина: В настройках Windows установлена неверная локаль для VBA.
  • 🔹 Решение: Перед кодом макроса добавьте строку:
    Option Compare Binary

Ошибка 4: Переворот только части строки

  • 🔹 Причина: В ячейке есть скрытые переносы строк (CHAR(10)).
  • 🔹 Решение: Замените их на пробелы: =ПОДСТАВИТЬ(A1;СИМВОЛ(10);" ").

FAQ: Частые вопросы по перевороту текста в Excel

Можно ли перевернуть текст в Excel Online?

В Excel Online нет поддержки VBA и Power Query, поэтому единственный способ — использовать формулы (см. раздел 1). Однако из-за ограничений браузерной версии формулы массива могут работать нестабильно.

Как перевернуть текст в столбце, а не в строке?

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

=ИНДЕКС($A$1:$A$5;СТРОКА()-МИН(СТРОКА($A$1:$A$5))+1)

И протяните её вниз. Для автоматического определения длины столбца замените $A$5 на ИНДЕКС($A:$A;СЧЁТЗ($A:$A)).

Почему после переворота русские буквы отображаются как «????»?

Это происходит из-за несовпадения кодировок. Решения:

  • 🔹 Сохраните файл в формате .xlsx (не .csv).
  • 🔹 В VBA добавьте строку Option Compare Text перед кодом.
  • 🔹 Используйте шрифты с поддержкой кириллицы (например, Arial или Times New Roman).
Как перевернуть текст в ячейке по диагонали (зеркально)?

Для зеркального отображения текста (например, для печати на прозрачной плёнке) используйте:

  1. Выделите ячейку → Главная → Формат → Формат ячеек.
  2. На вкладке Выравнивание установите Направление текста: 90° (для вертикального отображения) или 45° (для диагонального).
  3. Для полного зеркального эффекта скопируйте текст в Word, примените эффект Отражение и вставьте обратно как рисунок.

Внимание: В Excel нет встроенной функции для зеркального отображения символов (например, «d» → «ɗ»). Для этого нужны специализированные шрифты (например, Mirrored Text Generator).

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

Да, для этого подходят:

  • 🔹 Power Query: Автоматически обновляет результаты при изменении источника.
  • 🔹 VBA-события: Добавьте код в модуль листа:
    Private Sub Worksheet_Change(ByVal Target As Range)
    

    If Not Intersect(Target, Range("A1:A100")) Is Nothing Then

    Range("B" & Target.Row).Value = REVERSETEXT(Target)

    End If

    End Sub

    Этот код будет переворачивать текст в столбце A и выводить результат в столбец B при каждом изменении.