Как перевернуть числа в Excel: отзеркаливание цифр формулами и макросами

Задача отзеркалить числа в Microsoft Excel возникает реже, чем работа с текстом, но может быть критически важна для специфических задач: подготовки штрихкодов, создания симметричных дизайнов таблиц или анализа палиндромных последовательностей. В отличие от стандартного разворота текста (где помогает функция РАЗНТЕКСТ), с числами всё сложнее — Excel воспринимает их как математические значения, а не как строки символов.

Многие пользователи ошибочно пытаются применить к числам те же методы, что и для текста, но сталкиваются с ошибками #ЗНАЧ! или некорректными результатами. Например, если просто использовать =ЗАМЕНИТЬ(A1;"1";"Ɐ") (где — перевёрнутая единица), Excel преобразует число в дату или scientific-нотацию. В этой статье мы разберём 5 рабочих способов отзеркаливания чисел — от простых формул до VBA-скриптов, а также раскроем нюансы, которые не упоминаются в официальной документации.

Спойлер: единственный надёжный способ для чисел с нулями на конце (например, 100 → 001) — это макрос, так как формулы обрезают ведущие нули. Но для большинства задач хватит и стандартных функций.

1. Отзеркаливание чисел через формулу с заменой символов

Самый доступный метод — использовать комбинацию функций ТЕКСТ, ПСТР и ЗАМЕНИТЬ, заменяя каждую цифру на её зеркальный аналог из Unicode. Вот как это работает:

Шаг 1. Создайте таблицу соответствий цифр и их перевёрнутых версий (можно скрыть её на отдельном листе):

ЦифраUnicode-символКод для функции СИМВОЛ
0СИМВОЛ(8304)
1ƖСИМВОЛ(410)
2СИМВОЛ(12325)
69"9" (обычная цифра)
88"8" (симметрична)

Шаг 2. Введите формулу для ячейки A1 (где находится исходное число):

=ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(

ТЕКСТ(A1;"0"),"0",СИМВОЛ(8304)),

"1",СИМВОЛ(410)),

"2",СИМВОЛ(12325)),

"3",СИМВОЛ(190)),

"4",СИМВОЛ(8597)),

"5",СИМВОЛ(894)),

"6","9"),

"7",СИМВОЛ(651)),

"8","8"),

"9","6")

⚠️ Внимание: Символы для цифр 2-5, 7, 9 визуально неидеальны — они взяты из разных Unicode-диапазонов (математические символы, корейские слоговые блоки). Для профессионального использования лучше создать пользовательский шрифт с перевёрнутыми глифами.

Шаг 3. Скопируйте формулу на нужный диапазон. Если число содержит десятичную точку, добавьте в формулу замену "," на СИМВОЛ(823) (перевёрнутая запятая).

Исходное число преобразовано в текст (ТЕКСТ)

Все цифры заменены на Unicode-аналоги

Учтена десятичная запятая (если есть)

Формула скопирована как значения (Специальная вставка → Значения)

-->

2. Использование функции REVERSE в Power Query

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

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

  1. Выделите исходный диапазон с числами.
  2. Перейдите на вкладку ДанныеИз таблицы/диапазона (Excel автоматически преобразует данные в таблицу).
  3. В открывшемся редакторе Power Query выберите столбец с числами → ПреобразоватьФорматТекст.
  4. Добавьте пользовательский столбец с формулой:
    = Text.Reverse([Column1])

    где [Column1] — имя вашего столбца.

  5. Замените цифры на зеркальные с помощью Text.Replace (аналогично методу 1).
  6. Нажмите Закрыть и загрузить.

Преимущество этого способа: обработка происходит на уровне движка Power Query, что в 10-100 раз быстрее формул Excel для больших данных. Минус — требуется Excel 2016 или новее.

Excel 2010-2013

Excel 2016-2019

Office 365 / Excel 2021+

Не знаю версию

-->

3. VBA-макрос для зеркального отображения чисел

Для полной автоматизации (например, если нужно отзеркалить числа в сотнях файлов) напишем макрос. Он будет:

  • 🔹 Преобразовывать числа в текст
  • 🔹 Переворачивать строку
  • 🔹 Заменять цифры на Unicode-аналоги
  • 🔹 Сохранять ведущие нули (что невозможно в формулах)

Код макроса:

Sub MirrorNumbers()

Dim rng As Range, cell As Range

Dim numStr As String, mirrored As String

Dim mirrorMap As Object

' Создаём словарь для замены цифр

Set mirrorMap = CreateObject("Scripting.Dictionary")

mirrorMap.Add "0", ChrW(8304) ' ⁰

mirrorMap.Add "1", ChrW(410) ' Ɩ

mirrorMap.Add "2", ChrW(12325) ' ᄅ

mirrorMap.Add "3", ChrW(190) ' Ɛ

mirrorMap.Add "4", ChrW(8597) ' Ↄ

mirrorMap.Add "5", ChrW(894) ' ʞ

mirrorMap.Add "6", "9"

mirrorMap.Add "7", ChrW(651) ' ɥ

mirrorMap.Add "8", "8"

mirrorMap.Add "9", "6"

mirrorMap.Add ".", ChrW(823) ' ‵ (перевёрнутая запятая)

mirrorMap.Add ",", ChrW(823)

' Запрашиваем диапазон у пользователя

On Error Resume Next

Set rng = Application.InputBox( _

"Выделите диапазон с числами для отзеркаливания:", _

"Отзеркаливание чисел", _

Selection.Address, _

Type:=8)

On Error GoTo 0

If rng Is Nothing Then Exit Sub

' Обрабатываем каждую ячейку

For Each cell In rng

If IsNumeric(cell.Value) Then

numStr = CStr(cell.Value)

mirrored = ""

' Переворачиваем строку и заменяем символы

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

char = Mid(numStr, i, 1)

If mirrorMap.Exists(char) Then

mirrored = mirrored & mirrorMap(char)

Else

mirrored = mirrored & char ' Оставляем без изменений, если нет замены

End If

Next i

' Записываем результат

cell.Offset(0, 1).Value = mirrored

End If

Next cell

MsgBox "Отзеркаливание завершено! Результаты в столбце справа.", vbInformation

End Sub

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Запустите макрос (F5) и выделите диапазон с числами.
  4. Результаты появятся в столбце справа от исходных данных.
⚠️ Внимание: Макрос перезаписывает данные без предупреждения! Сначала протестируйте его на копии файла. Если в ячейках есть формулы (не значения), макрос вернёт ошибку.

4. Отзеркаливание с помощью пользовательской функции (UDF)

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

Код функции:

Function MIRROR_NUMBER(num As Variant) As String

Dim numStr As String, mirrored As String

Dim mirrorMap As Object

Dim i As Integer, char As String

' Проверяем, что на входе число или текстовое число

If Not (IsNumeric(num) Or (VarType(num) = vbString And IsNumeric(Replace(num, ",", ".")))) Then

MIRROR_NUMBER = "Ошибка: не число"

Exit Function

End If

' Преобразуем в строку

numStr = CStr(num)

' Создаём словарь замены (аналогично макросу)

Set mirrorMap = CreateObject("Scripting.Dictionary")

mirrorMap.Add "0", ChrW(8304)

mirrorMap.Add "1", ChrW(410)

mirrorMap.Add "2", ChrW(12325)

mirrorMap.Add "3", ChrW(190)

mirrorMap.Add "4", ChrW(8597)

mirrorMap.Add "5", ChrW(894)

mirrorMap.Add "6", "9"

mirrorMap.Add "7", ChrW(651)

mirrorMap.Add "8", "8"

mirrorMap.Add "9", "6"

mirrorMap.Add ".", ChrW(823)

mirrorMap.Add ",", ChrW(823)

' Переворачиваем строку

mirrored = ""

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

char = Mid(numStr, i, 1)

If mirrorMap.Exists(char) Then

mirrored = mirrored & mirrorMap(char)

Else

mirrored = mirrored & char

End If

Next i

MIRROR_NUMBER = mirrored

End Function

Как применять:

  • 🔹 Вставьте код в редактор VBA (как в методе 3).
  • 🔹 В любой ячейке введите =MIRROR_NUMBER(A1), где A1 — ячейка с числом.
  • 🔹 Скопируйте формулу на нужный диапазон.

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

  • 🔹 Работает как обычная формула (обновляется при изменении исходных данных).
  • 🔹 Поддерживает числа с десятичными разделителями.
  • 🔹 Можно встраивать в сложные вычисления (например, =ЕСЛИ(MIRROR_NUMBER(A1)=A1; "Палиндром"; "")).
Почему функция возвращает "Ошибка

не число" для ячейки с формулой?:

Потому что UDF получает на вход результат вычисления формулы, а не её текст. Если формула возвращает ошибку (например, #ДЕЛ/0!), функция это не обработает. Чтобы обойти ограничение, модифицируйте код:

If IsError(num) Then

MIRROR_NUMBER = "Ошибка в исходной ячейке"

Exit Function

End If

5. Альтернативные методы: шрифты и графические приёмы

Если вам нужно визуальное отзеркаливание (например, для дизайна), а не программное, рассмотрите эти варианты:

Способ 1. Использование шрифтов с зеркальными символами

  • 🔹 Установите шрифты вроде Mirrored Text или FlipFont (доступны на DaFont).
  • 🔹 Примените шрифт к ячейке и введите число — символы автоматически перевернутся.
  • 🔹 Минус: такие шрифты не поддерживают кириллицу и спецсимволы.

Способ 2. Вставка как картинки

  1. Напишите число в Word или Paint, отзеркальте его (Формат → Повернуть → Отразить по горизонтали).
  2. Скопируйте как картинку (Ctrl + C) и вставьте в Excel (Вставка → Рисунок).
  3. Уберите фон картинки для естественного вида.

Способ 3. Условное форматирование с поворотом текста

  • 🔹 Выделите ячейку → Главная → Формат → Формат ячеек → Выравнивание.
  • 🔹 Установите Поворот текста на 180°.
  • 🔹 Минус: число будет вверх ногами, а не зеркально отражённым.
МетодПлюсыМинусыПодходит для
Формулы с ЗАМЕНИТЬНе требует VBA, работает в любых версияхНе идеально для цифр 2-5, 7, 9Единичные числа, небольшие таблицы
Power QueryБыстрая обработка больших данныхТребует Excel 2016+, сложно для новичковМассивы данных (тысячи строк)
VBA-макросСохраняет ведущие нули, гибкая настройкаНе работает в Excel OnlineАвтоматизация, пакетная обработка
UDFРаботает как формула, динамическое обновлениеТребует навыков VBAИнтеграция в сложные вычисления
Шрифты/графикаВизуально идеальный результатНе редактируемое, не подходит для вычисленийДизайн, презентации

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

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

Ошибка 1. Формула возвращает #### вместо результата

  • 🔹 Причина: Столбец слишком узкий для Unicode-символов.
  • 🔹 Решение: Расширьте столбец или уменьшите размер шрифта.

Ошибка 2. Числа с десятичной запятой отображаются некорректно

  • 🔹 Причина: В формуле не учтён разделитель (точка или запятая).
  • 🔹 Решение: Добавьте замену для "," и "." (см. коды в таблице выше).

Ошибка 3. Макрос не работает для чисел с формулами

  • 🔹 Причина: VBA видит результат формулы, а не её текст.
  • 🔹 Решение: Скопируйте данные как значения (Специальная вставка → Значения) перед запуском макроса.

Ошибка 4. Перевёрнутые цифры выглядят криво

  • 🔹 Причина: Используются некорректные Unicode-символы.
  • 🔹 Решение: Проверьте коды символов в таблице или используйте шрифты с зеркальными глифами.

Ошибка 5. В Excel Online не работает VBA

  • 🔹 Причина: Веб-версия Excel не поддерживает макросы.
  • 🔹 Решение: Используйте формулы или Power Query (доступен в Excel Online с 2020 года).

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

Можно ли отзеркалить числа без VBA?

Да, используйте формулы с заменой символов (метод 1) или Power Query (метод 2). Однако для чисел с ведущими нулями (например, 001 → 100) эти методы не подойдут — нули будут обрезаны. В таком случае либо добавьте апостроф перед числом ('001), либо используйте VBA.

Почему после отзеркаливания числа не сортируются?

Потому что отзеркаленные числа — это текст, а не числовые значения. Excel сортирует текст посимвольно (1, 10, 2 вместо 1, 2, 10). Чтобы исправить:

  1. Добавьте скрытый столбец с оригинальными числами.
  2. Сортируйте по этому столбцу, а отображайте отзеркаленные значения.
Как отзеркалить номер телефона (например, +7 912 345-67-89)?

Для телефонных номеров используйте комбинацию функций:

  1. Удалите все нецифровые символы:
    =ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"-";"");" ";"");"+";"")
  2. Примените функцию MIRROR_NUMBER (метод 4) к очищенному номеру.
  3. Добавьте форматирование обратно (через ПСТР и конкатенацию).

Пример результата: +7 912 345-67-896Ɐ 8ᄅ 7-9Ɐ-543 219 7+.

Можно ли отзеркалить числа в Google Sheets?

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

  • 🔹 Формулы работают аналогично Excel (используйте =SUBSTITUTE вместо ЗАМЕНИТЬ).
  • 🔹 VBA недоступен, но можно использовать Google Apps Script (аналог макросов).
  • 🔹 Power Query отсутствует, но есть =ARRAYFORMULA для пакетной обработки.

Пример формулы для Google Sheets:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(A1;"0");"0";CHAR(8304));"1";CHAR(410));"6";"9")

Как вернуть оригинальные числа после отзеркаливания?

Если вы использовали формулы или Power Query, оригинальные данные сохранены в исходных ячейках. Если применяли VBA-макрос, который перезаписал значения:

  1. Отмените последнее действие (Ctrl + Z).
  2. Или восстановите предыдущую версию файла (Файл → История версий в OneDrive/SharePoint).
  3. Если файла нет в облаке, проверьте Автосохранение (Файл → Сведения → Управление книгой).
⚠️ Внимание: Если вы сохранили файл после работы макроса, оригинальные данные безвозвратно утрачены. Всегда работайте с копией файла!