Почему стандартные функции Excel не умеют переворачивать числа — и что с этим делать
Вы когда-нибудь пытались ввести в ячейку число 12345, а получить 54321 — и обнаруживали, что Excel упорно игнорирует ваши попытки? Дело в том, что в стандартном наборе функций программы просто нет инструмента для разворота чисел как таковых. Все потому, что Excel воспринимает цифры как математическую сущность, а не как текстовый набор символов. Но это не значит, что задача нерешаема!
Сегодня мы разберем 5 работающих методов — от элементарных формул до автоматизации через VBA. Вы узнаете, как перевернуть:
- 🔢 Целые числа (например,
789→987) - 📊 Числа с десятичными разрядами (
12.34→43.21) - 🔄 Диапазоны ячеек (массовый разворот)
- 📱 Данные в Excel Online (ограничения и обходные пути)
Важно: методы работают во всех актуальных версиях программы (2010–2023), но некоторые функции (например, TEXTJOIN) требуют Excel 2016 или новее. Для старых версий мы привели альтернативные решения.
Способ 1: Преобразование числа в текст + функция СЖПРОБЕЛЫ
Самый простой метод — сначала превратить число в текст, а затем развернуть его как строку. Для этого используем комбинацию функций ТЕКСТ (или TEXT в английской версии) и СЖПРОБЕЛЫ с ручным разделением символов.
Формула для ячейки A1 с числом 1234:
=СЖПРОБЕЛЫ(ПСТР(ТЕКСТ(A1);4;1)&ПСТР(ТЕКСТ(A1);3;1)&ПСТР(ТЕКСТ(A1);2;1)&ПСТР(ТЕКСТ(A1);1;1))
Как это работает:
ТЕКСТ(A1)— преобразует число в текстовую строку.ПСТР— извлекает каждый символ по отдельности (с 4-го по 1-й).СЖПРОБЕЛЫ— убирает пробелы, если они вдруг появились.
⚠️ Внимание: Этот метод требует ручного указания позиции каждого символа. Для чисел с переменной длиной (например, от 1 до 1000) придется создавать вложенные условия ЕСЛИ или использовать VBA.
Преобразуйте число в текст (функция ТЕКСТ)
Определите длину числа (функция ДЛСТР)
Извлеките символы в обратном порядке (функция ПСТР)
Объедините символы и удалите пробелы (СЖПРОБЕЛЫ)
-->
Способ 2: Функция ТЕКСТРАЗД для современных версий Excel
В Excel 2016 и новее появилась полезная функция ТЕКСТРАЗД (TEXTJOIN), которая упрощает разворот чисел. Она позволяет объединять текстовые элементы с любым разделителем — в нашем случае разделитель не нужен ("").
Формула для числа в ячейке A1:
=ТЕКСТРАЗД(СРЗНАЧ(ЕСЛИОШИБКА(ПСТР($A1;СТРОКА(D1:D10);1);""));;ИСТИНА)
Разбор формулы:
- 🔹
СТРОКА(D1:D10)— создает массив чисел от 1 до 10 (максимальная длина числа). - 🔹
ПСТР($A1;...;1)— извлекает каждый символ по порядку. - 🔹
ЕСЛИОШИБКА— игнорирует ошибки, если длина числа меньше 10. - 🔹
ТЕКСТРАЗД(...,,"",ИСТИНА)— объединяет символы без разделителя.
Этот метод автоматически адаптируется под длину числа, но требует Excel 2016+. Для старых версий используйте VBA (способ 4).
Способ 3: Разворот с сохранением формата (для чисел с разделителями)
Если ваше число содержит точки, запятые или пробелы (например, 1 234,56), простой разворот символов даст некорректный результат (65,432 1). Чтобы сохранить формат, нужно:
- Удалить все разделители.
- Развернуть "чистые" цифры.
- Вернуть разделители на новые позиции.
Пример формулы для числа 1 234,56 в ячейке A1:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;",";"");" ";"");6;1)&ПСТР(ПОДСТАВИТЬ(A1;",";"");5;1)&"."&ПСТР(ПОДСТАВИТЬ(A1;",";"");4;1)&ПСТР(ПОДСТАВИТЬ(A1;",";"");3;1)&ПСТР(ПОДСТАВИТЬ(A1;",";"");2;1)&ПСТР(ПОДСТАВИТЬ(A1;",";"");1;1));" ";",");",";" ")
Здесь мы:
- Удаляем пробелы и запятые (
ПОДСТАВИТЬ). - Разворачиваем цифры и вставляем точку как десятичный разделитель.
- Возвращаем пробел как разделитель тысяч.
⚠️ Внимание: Эта формула работает только для чисел с фиксированным количеством разрядов (например, всегда 2 знака после запятой). Для динамических форматов используйте VBA.
| Исходное число | Формула разворота | Результат |
|---|---|---|
1234 |
=СЖПРОБЕЛЫ(ПСТР(A1;4;1)&ПСТР(A1;3;1)&ПСТР(A1;2;1)&ПСТР(A1;1;1)) |
4321 |
12,34 |
=ПОДСТАВИТЬ(ПСТР(A1;4;1)&ПСТР(A1;2;1)&"."&ПСТР(A1;3;1)&ПСТР(A1;1;1);",";".") |
43.21 |
1 000 |
=ПОДСТАВИТЬ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(A1;" ";"");4;1)&ПСТР(ПОДСТАВИТЬ(A1;" ";"");3;1)&ПСТР(ПОДСТАВИТЬ(A1;" ";"");2;1)&ПСТР(ПОДСТАВИТЬ(A1;" ";"");1;1));" ";"";3) |
000 1 |
Способ 4: Автоматизация через VBA (для любых чисел)
Если вам нужно разворачивать числа регулярно или работать с большими диапазонами, напишите простую процедуру на VBA. Она будет работать даже со числами переменной длины и сохранять десятичные разделители.
Откройте редактор VBA (Alt + F11), вставьте новый модуль (Insert → Module) и добавьте этот код:
Function ReverseNumber(rng As Range) As String
Dim strNum As String
Dim i As Integer
Dim reversed As String
strNum = CStr(rng.Value)
reversed = ""
For i = Len(strNum) To 1 Step -1
reversed = reversed & Mid(strNum, i, 1)
Next i
ReverseNumber = reversed
End Function
Теперь в любой ячейке можно использовать формулу:
=ReverseNumber(A1)
Преимущества метода:
- 🔧 Работает с числами любой длины (включая 100+ символов).
- 📌 Сохраняет
,и.как разделители. - 🚀 Обрабатывает диапазоны ячеек за секунды (просто протяните формулу).
⚠️ Внимание: В Excel Online макросы VBA не работают. Для онлайн-версии используйте способ 2 или 3.
Как развернуть число с сохранением знака минус?
Добавьте в начало функции VBA проверку на отрицательное число:
If Left(strNum, 1) = "-" Then
strNum = Mid(strNum, 2)
reversed = "-" & reversed
End If
Теперь формула корректно обработает -123 → -321.
Способ 5: Разворот через Power Query (для больших данных)
Если вы работаете с тысячами строк, Power Query (вкладка Данные → Получение данных) поможет развернуть числа без формул. Алгоритм:
- Загрузите данные в Power Query (
Данные → Из таблицы/диапазона). - Добавьте пользовательский столбец с формулой:
=Text.Reverse(Text.From([YourColumn])) - Замените
[YourColumn]на имя вашего столбца. - Загрузите данные обратно в Excel.
Это единственный метод, который обрабатывает миллионы строк без замедления — идеально для аналитики больших данных.
Частые ошибки и как их избежать
При развороте чисел пользователи часто сталкиваются с типичными проблемами:
- Лидирующие нули пропадают
Excel автоматически убирает нули в начале числа (например,00123становится123). Решение: предварительно отформатируйте ячейку какТекст(Ctrl + 1 → Текстовый). - Десятичный разделитель "уезжает"
Если в исходном числе была запятая (12,34), а после разворота стала точкой (43.21), используйтеПОДСТАВИТЬдля унификации разделителей перед разворотом. - Формула не тянется на другие ячейки
Убедитесь, что в формуле используются относительные ссылки (например,A1, а не$A$1). Или зафиксируйте только столбец ($A1).
Проверьте настройки региональных параметров Excel (Файл → Параметры → Дополнительно → Параметры редактирования), если разделители отображаются некорректно.
FAQ: Ответы на популярные вопросы
Можно ли развернуть число в Excel Online?
Да, но с ограничениями. В онлайн-версии работают формулы на основе ТЕКСТРАЗД (способ 2) и ПСТР (способ 1), но VBA и Power Query недоступны. Для чисел с переменной длиной придется использовать обходные пути — например, создавать вспомогательные столбцы для каждого символа.
Как развернуть номер телефона (например, +7(999)123-45-67)?
Используйте комбинацию ПОДСТАВИТЬ + ПСТР:
- Удалите все нецифровые символы:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"(";"");")";"");"-";"");"+";"") - Разверните "чистые" цифры (способ 1 или 2).
- Верните формат телефона:
= "+"&ПСТР(развернутое_число;1;1)&"("&ПСТР(развернутое_число;2;3)&")"&ПСТР(развернутое_число;5;3)&"-"&ПСТР(развернутое_число;8;2)&"-"&ПСТР(развернутое_число;10;2)
Почему после разворота число отображается как дата (например, 12.03 → 3/21)?
Excel автоматически преобразует текстовую строку 12.03 в дату. Чтобы избежать этого, отформатируйте ячейку с результатом как Текст (Ctrl + 1 → Текстовый) или добавьте апостроф перед формулой: '=СЖПРОБЕЛЫ(...).
Как развернуть числа в столбце без формул?
Используйте Power Query (способ 5) или запишите макрос:
- Выделите столбец с числами.
- Откройте редактор VBA (
Alt + F11). - Вставьте код из способа 4, но замените
FunctionнаSubи добавьте цикл по выделенному диапазону.
Пример кода для макроса:
Sub ReverseSelectedNumbers()
Dim cell As Range
For Each cell In Selection
cell.Value = StrReverse(CStr(cell.Value))
Next cell
End Sub
Работает ли разворот для отрицательных чисел?
Стандартные формулы (способы 1–3) развернут и знак минус: -123 → 321-. Чтобы сохранить знак в начале, модифицируйте формулу:
=ЕСЛИ(ЛЕВСИМВ(A1)="-";"-"&СЖПРОБЕЛЫ(ПСТР(ПРАВСИМВ(A1;ДЛСТР(A1)-1);ДЛСТР(A1)-1;1)&...); обычная_формула_разворота)
Или используйте VBA с проверкой из спойлера в способе 4.