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

Работая с данными в Microsoft Excel, вы рано или поздно столкнётесь с необходимостью узнать числовой код символа — будь то для автоматизации задач, проверки текста на скрытые символы или интеграции с другими системами. Коды символов (ASCII, Unicode) используются в формулах, макросах и даже при импорте/экспорте данных. Но как их быстро определить, не прибегая к сторонним программам?

В этой статье вы найдёте 5 проверенных способов — от простейших встроенных функций до продвинутых методов с использованием VBA. Мы разберём нюансы работы с разными версиями Excel (2010–2026, Office 365), покажем, как избежать типичных ошибок, и дадим готовые решения для специфических случаев: непечатаемые символы, эмодзи, символы валют и др. Неважно, новичок вы или опытный пользователь — здесь есть ответ на ваш вопрос.

———

1. Функция КОДСИМВ: самый быстрый способ

Если вам нужно узнать код первого символа в ячейке, функция КОДСИМВ (CODE в английской версии) — ваш главный помощник. Она возвращает числовое значение символа в кодировке Unicode (для ASCII-символов коды совпадают).

Формат функции прост:

=КОДСИМВ(текст)

Где текст — это либо ссылка на ячейку (например, A1), либо текст в кавычках (например, "А"). Важно: функция анализирует только первый символ в строке. Остальные игнорируются.

Примеры использования:

  • 🔹 =КОДСИМВ("€") → вернёт 8364 (код символа евро)
  • 🔹 =КОДСИМВ(A1), где в A1 записано "Привет" → вернёт 1055 (код буквы "П")
  • 🔹 =КОДСИМВ(" ") → вернёт 32 (код пробела)

Ограничение: функция не работает с пустыми ячейками — в этом случае вернёт ошибку #ЗНАЧ!. Также она не подходит для анализа непечатаемых символов (табуляция, перевод строки), но об этом поговорим позже.

2. Обратная функция СИМВОЛ: проверка кода

Чтобы убедиться, что код соответствует нужному символу, используйте функцию СИМВОЛ (CHAR в английской версии). Она преобразует числовой код обратно в символ. Это полезно для отладки формул или проверки данных.

Синтаксис:

=СИМВОЛ(код)

Где код — число от 1 до 255 (для ASCII) или до 65535 (для Unicode).

Примеры:

  • 🔹 =СИМВОЛ(65) → вернёт "A"
  • 🔹 =СИМВОЛ(1089) → вернёт "я" (русская буква)
  • 🔹 =СИМВОЛ(10) → создаст перевод строки в ячейке

⚠️ Внимание: некоторые коды (например, 7 — звуковой сигнал, 13 — возврат каретки) могут не отображаться визуально, но влияют на поведение данных при экспорте или обработке.

📊 Как часто вы работаете с кодами символов в Excel?
Часто (еженедельно)
Иногда (ежемесячно)
Рядом (раз в полгода)
Никогда

3. Коды непечатаемых символов: табуляция, перевод строки

Стандартные функции КОДСИМВ/СИМВОЛ не всегда справляются с невидимыми символами (табуляция, разрывы строк и др.). Для их идентификации используйте комбинацию функций или VBA.

Самый надёжный способ — функция ПОИСК с поиском по символу:

=ПОИСК(СИМВОЛ(10); A1)

Если результат не ошибка #ЗНАЧ!, значит в ячейке A1 есть символ перевода строки (код 10). Аналогично проверяйте:

  • 🔹 Табуляция: СИМВОЛ(9)
  • 🔹 Возврат каретки: СИМВОЛ(13)
  • 🔹 Неразрывный пробел: СИМВОЛ(160)

Для массовой обработки данных создайте вспомогательную таблицу с кодами и проверяйте наличие каждого символа через ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(ПОИСК(СИМВОЛ(10); A1); "Нет"; "Есть перевод строки")
Почему не работает поиск по СИМВОЛ(13)?

В Windows символ конца строки часто представляет собой комбинацию СИМВОЛ(13) + СИМВОЛ(10) (CR+LF). Если искать только СИМВОЛ(13), результат может быть ложноотрицательным. Используйте =ПОИСК(СИМВОЛ(13)&СИМВОЛ(10); A1)

4. VBA-макрос для анализа всех символов в ячейке

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

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль (Insert → Module).
  3. Скопируйте код ниже.
  4. Закройте редактор и запустите макрос через Alt + F8.
Sub GetCharCodes()

Dim rng As Range

Dim cell As Range

Dim i As Integer, charCode As Integer

Dim result As String

' Выбираем диапазон с данными (например, колонку A)

Set rng = Selection

For Each cell In rng

result = ""

For i = 1 To Len(cell.Value)

charCode = Asc(Mid(cell.Value, i, 1))

result = result & charCode & " "

Next i

' Выводим результат в соседнюю ячейку

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

Next cell

End Sub

Макрос обработает все выделенные ячейки и запишет коды символов через пробел в соседнюю колонку справа. Например, для ячейки с текстом "Hi" результат будет 72 105.

⚠️ Внимание: макрос перезапишет данные в соседних ячейках! Перед запуском сохраните файл или создайте резервную копию.

☑️ Подготовка к запуску VBA-макроса

Выполнено: 0 / 4

5. Горячие клавиши и альтернативные методы

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

Способ 1: Таблица символов Windows

  1. Нажмите Win + R, введите charmap.exe и нажмите Enter.
  2. Найдите нужный символ, кликните на него — код появится внизу окна (например, U+0041 для буквы "A").
  3. Число после U+ — это шестнадцатеричный код. Переведите его в десятичный через =ШЕСТН.В.ДЕС("41").

Способ 2: Онлайн-конвертеры

Для редких символов (эмодзи, математические знаки) используйте сервисы вроде Unicode Table. Скопируйте символ в поле поиска — сайт покажет его код в разных форматах.

Способ 3: Клавиатурные комбинации

В Windows можно вводить символы по их коду с помощью Alt:

  • 🔹 Удерживайте Alt, наберите код на цифровой клавиатуре (например, Alt + 0169 для ©).
  • 🔹 Для кодов > 255 используйте префикс 0 (например, Alt + 01089 для "я").
Символ Код (десятичный) Клавиатурная комбинация Описание
8364 Alt + 0128 Знак евро
§ 167 Alt + 0167 Параграф
182 Alt + 0182 Знак абзаца
«» 171 / 187 Alt + 0171 / Alt + 0187 Кавычки-ёлочки
  160 Alt + 0160 Неразрывный пробел

6. Продвинутые сценарии: работа с эмодзи и специальными символами

Символы за пределами базовой многобайтовой плоскости (эмодзи, редкие иероглифы, математические знаки) имеют коды > 65535. Стандартные функции Excel с ними не работают. Вот решения:

Для эмодзи:

Используйте VBA-функцию AscW, которая поддерживает Unicode до 65535. Для кодов выше (например, 😊 — 128522) нужен обходной путь:

Function GetEmojiCode(rng As Range) As String

Dim str As String

str = rng.Value

GetEmojiCode = AscW(Left(str, 1))

' Для эмодзи вернёт только часть кода (суррогатную пару)

End Function

Для точного определения кода эмодзи используйте онлайн-сервисы или Python-скрипты.

Для математических символов:

Многие символы (∑, √, ∞) имеют коды в диапазоне 8704–8747. Их можно вводить через Alt + код или функцию СИМВОЛ. Полный список см. в документации UTF-8.

⚠️ Внимание: при экспорте данных с эмодзи в .csv или .txt они могут отображаться как ??. Чтобы избежать потерь, сохраняйте файл в кодировке UTF-8 (вручную выбирайте при сохранении).

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

При работе с кодами символов пользователи часто сталкиваются с следующими проблемами:

Ошибка 1: Функция КОДСИМВ возвращает #ЗНАЧ!

Причины:

  • 🔹 Пустая ячейка — проверьте данные на наличие текста.
  • 🔹 Ячейка содержит ошибку (например, #ДЕЛ/0!) — исправьте её.
  • 🔹 Символ не поддерживается текущим шрифтом — измените шрифт на Arial Unicode MS или Segoe UI Symbol.

Ошибка 2: Несовпадение кодов в разных системах

Коды символов могут отличаться в Windows и macOS. Например, символ "€" в Windows имеет код 8364, а в macOS164 (в кодировке Mac Roman). Всегда уточняйте кодировку при обмене данными между платформами.

Ошибка 3: Проблемы с неразрывными пробелами

Неразрывный пробел (СИМВОЛ(160)) визуально неотличим от обычного, но может ломать формулы (например, СЖПРОБЕЛЫ его не удаляет). Чтобы найти все такие пробелы в диапазоне:

=ЕСЛИ(НАЙТИ(СИМВОЛ(160); A1); "Есть неразрывный пробел"; "")

Ошибка 4: Экспорт в CSV с искажением символов

При сохранении в .csv символы с кодами > 127 (русские буквы, €, ©) могут отображаться как ??. Решение:

  • 🔹 Сохраняйте файл в кодировке UTF-8 (вручную выберите её в диалоговом окне сохранения).
  • 🔹 Используйте ТЕКСТДОБАВ для явного указания кодировки: =ТЕКСТДОБАВ(123; "utf-8")Excel 365).

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

Можно ли узнать код символа в Excel Online?

Да, функции КОДСИМВ и СИМВОЛ работают в Excel Online, но VBA-макросы недоступны. Для анализа всех символов в строке используйте ПОИСК с циклом по символам через вспомогательные столбцы.

Как найти код символа табуляции в ячейке?

Табуляция имеет код 9. Чтобы проверить её наличие в ячейке A1, используйте формулу:

=ЕСЛИ(НАЙТИ(СИМВОЛ(9); A1); "Есть табуляция"; "Нет")

Обратите внимание: в Excel табуляция внутри ячейки отображается как пробел, но ведёт себя иначе при экспорте.

Почему функция КОДСИМВ возвращает отрицательные числа?

Это происходит при работе с текстом в кодировке ANSI (не Unicode), где символы с кодами > 127 интерпретируются как отрицательные. Решение: пересохраните файл в .xlsx (Unicode) или используйте =КОДСИМВ(ПОДСТАВИТЬ(A1; СИМВОЛ(код); "")) для очистки.

Как вставить символ по его коду без формул?

В Windows:

  1. Удерживайте Alt.
  2. Наберите код на цифровой клавиатуре (например, Alt + 0169 для ©).
  3. Отпустите Alt — символ появится.

В macOS: используйте Option + код (например, Option + 2 для ™).

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

Да, но потребуется создать вспомогательные столбцы. Пример для ячейки A1 с текстом "Excel":

  1. В B1 введите: =ЛЕВСИМВ(A1;1) (первый символ).
  2. В C1: =КОДСИМВ(B1) (его код).
  3. Скопируйте формулы вниз, заменяя ЛЕВСИМВ на =ПСТР($A1;СТРОКА(A1);1) (для 2-го, 3-го символов и т.д.).

Для автоматизации используйте ПОВТОР и ТРАНСП.