Задача перевернуть текст в 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) и протяните вниз.
2. Функция REVERSETEXT в Power Query
Если вам нужно перевернуть большой массив данных (например, столбец из 10 000 строк), удобнее использовать Power Query — инструмент для преобразования данных, встроенный в Excel 2016+.
Пошаговая инструкция:
- Выделите исходный диапазон с текстом.
- Перейдите на вкладку
Данные→Из таблицы/диапазона(в Excel 2016–2019 илиПолучить данные → Из таблицы/диапазонав Excel 365). - В открывшемся редакторе Power Query выделите столбец с текстом.
- Перейдите на вкладку
Добавить столбец→Пользовательский столбец. - Введите имя нового столбца (например, «Перевёрнутый текст») и формулу:
Замените= Text.Reverse([Column1])Column1на название вашего столбца. - Нажмите
ОК→Закрыть и загрузить.
Преимущества метода:
- 🚀 Обрабатывает миллионы строк без замедления.
- 🔄 Автоматически обновляется при изменении исходных данных.
- 📊 Сохраняет форматирование таблицы.
3. Макрос VBA для переворота текста
Для пользователей, которые часто работают с перевёрнутым текстом, удобнее создать пользовательскую функцию (UDF) на VBA. Она будет доступна как стандартная функция Excel.
Инструкция:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module. - Вставьте следующий код:
Function REVERSETEXT(rng As Range) As StringDim 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
- Закройте редактор и вернитесь в Excel.
- Теперь в любой ячейке можно использовать формулу:
=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:
- Откройте
Расширения → Apps Script. - Вставьте код:
function REVERSETEXT(input) {return input.split("").reverse().join("");
}
- Сохраните проект и обновите таблицу.
- Теперь используйте формулу:
=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).
Как перевернуть текст в ячейке по диагонали (зеркально)?
Для зеркального отображения текста (например, для печати на прозрачной плёнке) используйте:
- Выделите ячейку →
Главная → Формат → Формат ячеек. - На вкладке
ВыравниваниеустановитеНаправление текста: 90°(для вертикального отображения) или45°(для диагонального). - Для полного зеркального эффекта скопируйте текст в 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при каждом изменении.