Разворот текста в ячейке: рабочие методы для любой версии

Иван Корнев·21.05.2024·4 мин

Чтобы перевернуть строку в Excel (изменить порядок символов с конца на начало), проще всего использовать формулу с функциями TEXTJOIN, MID и SEQUENCE (для новых версий) или комбинацию с INDIRECT (для старых). Это позволяет автоматически развернуть текст без ручного копирования. Если нужно обработать тысячи строк, эффективнее применить макрос VBA или инструмент Power Query.

Формулы для современных версий (Microsoft 365, Excel 2021+)

В актуальных версиях табличного процессора появилась динамическая функция SEQUENCE, которая значительно упрощает создание массивов. Она позволяет генерировать последовательность чисел в обратном порядке, что идеально подходит для посимвольного чтения строки справа налево.

Формула для ячейки B1, если исходный текст находится в A1:

=TEXTJOIN(""); TRUE; MID(A1; SEQUENCE(ДЛСТР(A1); ; ДЛСТР(A1); -1); 1))

Примечание: В русской версии Excel разделителем аргументов обычно является точка с запятой (;), в английской — запятая (,).

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

  1. ДЛСТР(A1) определяет длину текста.
  2. SEQUENCE(...; -1) создает массив чисел от длины строки до 1 с шагом минус один.
  3. MID извлекает символы согласно этому массиву позиций.
  4. TEXTJOIN склеивает полученные символы в единую перевернутую строку.

Если у вас англоязычный интерфейс, замените названия функций: ДЛСТРLEN, ДЛСТРLEN. Формула будет выглядеть так: =TEXTJOIN("", TRUE, MID(A1, SEQUENCE(LEN(A1), , LEN(A1), -1), 1)).

Универсальный способ для старых версий (Excel 2016, 2013 и ранее)

В версиях без поддержки динамических массивов и функции SEQUENCE потребуется более сложная конструкция с использованием СТРОКА (или ROW) и ДВССЫЛ (или INDIRECT). Эта формула работает во всех версиях Excel, начиная с 2007 года.

Вставьте следующую формулу в ячейку результата:

=СЦЕПИТЬ(ПОЗВОЛУ(MID(A1; ДЛСТР(A1)-СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)))+1; 1)))

Для английской версии:

=TEXTJOIN("", TRUE, MID(A1, LEN(A1) - ROW(INDIRECT("1:" & LEN(A1))) + 1, 1))

Нюансы использования:

  • В очень старых версиях (до 2016 года) эту формулу может потребоваться ввести как формулу массива. Для этого после ввода нажмите не просто Enter, а комбинацию Ctrl + Shift + Enter. В строке формул вокруг выражения появятся фигурные скобки {}.
  • Функция СЦЕПИТЬ в сочетании с массивом может не сработать в некоторых контекстах без обертки в TEXTJOIN (доступен с 2019 версии). Если TEXTJOIN недоступен, единственным вариантом остается макрос или вспомогательный столбец.

Автоматизация через макрос VBA

Если задача стоит перевернуть текст в большом количестве ячеек регулярно, использование формул может замедлить работу файла. Наилучшим решением станет простой макрос на языке VBA. Он мгновенно обработает выделенный диапазон.

Код макроса:

Sub ReverseStringSelection()
    Dim cell As Range
    Dim txt As String
    Dim revTxt As String
    Dim i As Long
    
    ' Проход по каждой ячейке в выделении
    For Each cell In Selection
        If Not IsEmpty(cell) Then
            txt = CStr(cell.Value)
            revTxt = ""
            ' Цикл перебора символов с конца
            For i = Len(txt) To 1 Step -1
                revTxt = revTxt & Mid(txt, i, 1)
            Next i
            cell.Value = revTxt
        End If
    Next cell
End Sub

Инструкция по запуску:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В меню выберите Insert > Module.
  3. Вставьте код выше в окно модуля.
  4. Вернитесь в Excel, выделите ячейки с текстом и нажмите Alt + F8.
  5. Выберите макрос ReverseStringSelection и нажмите «Выполнить».

Макрос необратимо заменяет исходные данные. Перед запуском обязательно сохраните копию файла или продублируйте столбец с данными.

Обработка больших данных в Power Query

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

Алгоритм действий:

  1. Выделите таблицу и перейдите на вкладку ДанныеИз таблицы/диапазона.
  2. В редакторе Power Query выберите столбец с текстом.
  3. Перейдите на вкладку Добавление столбцаСтолбец пользовательских функций.
  4. Введите имя нового столбца (например, "Перевернутый") и формулу: Text.Reverse([НазваниеВашегоСтолбца]) (Функция Text.Reverse является встроенной и специально предназначена для этой задачи).
  5. Нажмите ОК, затем Закрыть и загрузить.

Этот метод наиболее производителен при работе с огромными массивами данных, так как движок Power Query оптимизирован для таких операций лучше, чем формулы листа.

Сравнение методов решения задачи

МетодТребования к версииСложность внедренияПроизводительностьКогда использовать
Формула с SEQUENCEExcel 2021, MS 365НизкаяСредняяБыстрая разовая задача в новой версии
Формула с INDIRECTЛюбая (2007+)СредняяНизкая (на больших объемах)Совместимость со старыми файлами
Макрос VBAЛюбая (нужно включить макросы)СредняяВысокаяРегулярная обработка, большие объемы
Power QueryExcel 2016+СредняяОчень высокаяОчистка и трансформация баз данных

Частые ошибки

  • Игнорирование пробелов. Если в начале или конце строки есть скрытые пробелы, они станут первыми символами в перевернутой строке. Используйте функцию СЖПРОБЕЛЫ (или TRIM) перед разворотом, если чистота данных критична.
  • Проблемы с кодировкой. Стандартные формулы Excel корректно работают с кириллицей и большинством символов Unicode, но при использовании старых методов через байтовые операции (не рассмотренных здесь) могли возникать ошибки с эмодзи. Предложенные выше способы безопасны.
  • Ошибка #ССЫЛКА! в старых формулах. Возникает, если забыли нажать Ctrl+Shift+Enter в версиях до 2016 года при использовании массивных конструкций.

FAQ

Можно ли перевернуть строку без формул и макросов? Стандартными средствами интерфейса Excel (кнопками на ленте) сделать это нельзя. Потребуется либо формула, либо сторонняя надстройка.

Разворачивается ли формула автоматически при изменении исходного текста? Да, если вы используете формульный метод, результат обновится мгновенно при изменении содержимого исходной ячейки. Макрос и Power Query требуют повторного запуска или обновления данных соответственно.

Как перевернуть порядок слов в предложении, а не букв? Предложенные методы разворачивают строку посимвольно ("Привет мир" → "рим тевирП"). Чтобы перевернуть порядок слов ("мир Привет"), потребуется более сложная формула с разделителями или специальная функция в Power Query (Text.Split + List.Reverse + Text.Combine).