Работая с данными в 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 — возврат каретки) могут не отображаться визуально, но влияют на поведение данных при экспорте или обработке.
3. Коды непечатаемых символов: табуляция, перевод строки
Стандартные функции КОДСИМВ/СИМВОЛ не всегда справляются с невидимыми символами (табуляция, разрывы строк и др.). Для их идентификации используйте комбинацию функций или VBA.
Самый надёжный способ — функция ПОИСК с поиском по символу:
=ПОИСК(СИМВОЛ(10); A1)
Если результат не ошибка #ЗНАЧ!, значит в ячейке A1 есть символ перевода строки (код 10). Аналогично проверяйте:
- 🔹 Табуляция:
СИМВОЛ(9) - 🔹 Возврат каретки:
СИМВОЛ(13) - 🔹 Неразрывный пробел:
СИМВОЛ(160)
Для массовой обработки данных создайте вспомогательную таблицу с кодами и проверяйте наличие каждого символа через ЕСЛИОШИБКА:
=ЕСЛИОШИБКА(ПОИСК(СИМВОЛ(10); A1); "Нет"; "Есть перевод строки")
Почему не работает поиск по СИМВОЛ(13)?
В Windows символ конца строки часто представляет собой комбинацию СИМВОЛ(13) + СИМВОЛ(10) (CR+LF). Если искать только СИМВОЛ(13), результат может быть ложноотрицательным. Используйте =ПОИСК(СИМВОЛ(13)&СИМВОЛ(10); A1)
4. VBA-макрос для анализа всех символов в ячейке
Если вам нужно получить коды всех символов в строке (а не только первого), стандартные функции не помогут. Здесь пригодится VBA. Ниже макрос, который выводит коды всех символов в выбранной ячейке в новую колонку:
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте новый модуль (
Insert → Module). - Скопируйте код ниже.
- Закройте редактор и запустите макрос через
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-макроса
5. Горячие клавиши и альтернативные методы
Если вам нужно узнать код символа один раз и без формул, воспользуйтесь системными инструментами:
Способ 1: Таблица символов Windows
- Нажмите
Win + R, введитеcharmap.exeи нажмитеEnter. - Найдите нужный символ, кликните на него — код появится внизу окна (например,
U+0041для буквы "A"). - Число после
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, а в macOS — 164 (в кодировке 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:
- Удерживайте
Alt. - Наберите код на цифровой клавиатуре (например,
Alt + 0169для ©). - Отпустите
Alt— символ появится.
В macOS: используйте Option + код (например, Option + 2 для ™).
Можно ли получить коды всех символов в диапазоне без VBA?
Да, но потребуется создать вспомогательные столбцы. Пример для ячейки A1 с текстом "Excel":
- В
B1введите:=ЛЕВСИМВ(A1;1)(первый символ). - В
C1:=КОДСИМВ(B1)(его код). - Скопируйте формулы вниз, заменяя
ЛЕВСИМВна=ПСТР($A1;СТРОКА(A1);1)(для 2-го, 3-го символов и т.д.).
Для автоматизации используйте ПОВТОР и ТРАНСП.