Функция ДЛСТР в Microsoft Excel возвращает количество символов в ячейке, включая пробелы, знаки препинания и непечатаемые символы (например, табуляцию). Если вы получаете неожиданный результат — например, для текста "Привет" функция показывает 10 вместо 6 — проблема кроется в скрытых символах (переносах строк, неразрывных пробелах или BOM-метках при импорте данных). Проверьте это через =КОДСИМВ(ПСТР(A1;1;1)) — если результат 65279, в тексте присутствует BOM.
В отличие от ЛЕН (англ. LEN), которая работает аналогично, ДЛСТР — это русскоязычная версия функции, доступная в локализованных версиях Excel. Она учитывает все символы, включая кириллицу, латиницу и специальные знаки, но не различает однобайтовые и многобайтовые кодировки (например, символ "ё" считается за 1, как и "a"). Ошибка #ИМЯ? при вводе =ДЛСТР() означает, что функция не распознаётся — проверьте регистр букв или используйте английский аналог.
Синтаксис и базовые правила функции ДЛСТР
Формула имеет единственный обязательный аргумент:
=ДЛСТР(текст)
Где текст — это:
- 📌 Адрес ячейки (например,
A1илиЛист2!B5). - 📜 Текстовая строка в кавычках (например,
"Excel 2023"). - 🔢 Результат другой функции, возвращающей текст (например,
=ДЛСТР(СЦЕПИТЬ("А";"Б"))).
Функция не требует дополнительных параметров, но её поведение меняется в зависимости от типа данных:
| Тип данных в ячейке | Результат ДЛСТР | Пример |
|---|---|---|
| Текст | Количество всех символов | =ДЛСТР("А1") → 2 |
| Число | Количество символов в текстовом представлении | =ДЛСТР(123) → 3 |
| Дата/время | Количество символов в отформатированной строке | =ДЛСТР(ДАТА(2023;1;1)) → 10 (если формат "дд.мм.гггг") |
| Логическое значение | 4 (ИСТИНА) или 5 (ЛОЖЬ) | =ДЛСТР(ИСТИНА) → 4 |
Ошибка (например, #Н/Д) | Ошибка #ЗНАЧ! | =ДЛСТР(#Н/Д) → #ЗНАЧ! |
Важно: если ячейка содержит формулу, ДЛСТР подсчитает символы в её результате, а не в самой формуле. Например, для ячейки с =СЕГОДНЯ() функция вернёт количество символов в текущей дате (обычно 10 для формата "дд.мм.гггг").
⚠️ Внимание: В Excel Online и мобильных версиях функция ДЛСТР может не поддерживаться. Используйте LEN или проверьте настройки языка интерфейса.
Практические примеры использования ДЛСТР
Функция полезна для валидации данных, очистки текста и анализа структуры строк. Рассмотрим типовые задачи:
1. Проверка минимальной длины пароля
Допустим, в столбце A хранятся пароли пользователей, а минимальная длина — 8 символов. Формула для проверки:
=ЕСЛИ(ДЛСТР(A1)>=8; "ОК"; "Слишком короткий")
Распространите её на весь столбец, чтобы выявить несоответствия.
2. Подсчёт слов в ячейке
Чтобы приблизительно посчитать количество слов (разделённых пробелами), используйте комбинацию:
=ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))=0; 0; ДЛСТР(ПОДСТАВИТЬ(A1;" ";""))-ДЛСТР(A1)+1)
Формула заменяет пробелы на пустоту, затем вычитает из длины строки без пробелов её исходную длину и добавляет 1 (количество слов = количество пробелов + 1).
3. Удаление лишних пробелов
Если в тексте есть двойные пробелы или пробелы в начале/конце, их можно обнаружить с помощью:
=ЕСЛИ(ДЛСТР(A1)=ДЛСТР(СЖПРОБЕЛЫ(A1)); "Пробелов нет"; "Есть лишние пробелы")
1. Убедитесь, что ячейка не содержит ошибок (например, #Н/Д).
2. Проверьте наличие скрытых символов через =КОДСИМВ(ПСТР(ячейка;1;1)).
3. Для дат используйте =ДЛСТР(ТЕКСТ(ячейка;"дд.мм.гггг")), чтобы избежать неожиданных результатов.
4. В макросах используйте английский аналог LEN, даже если работаете с русскоязычной версией Excel.
-->
Распространённые ошибки и их решения
Ошибки при работе с ДЛСТР делятся на три категории: синтаксические, логические и связанные с данными. Рассмотрим каждую.
1. Ошибка #ИМЯ?
Причины и решения:
- 🔤 Опечатка в названии функции. Проверьте регистр:
ДЛСТР(правильно) vsдлстрилиДлстр(неправильно). - 🌐 Английская версия Excel. Используйте
LENвместоДЛСТР. - 📊 Функция введена как текст. Убедитесь, что ячейка не отформатирована как текст (проверьте через
=ТИП(A1)— результат 2 означает текстовый формат).
2. Неожиданное количество символов
Если =ДЛСТР("А") возвращает 2 или более, проверьте:
- 🕵️ Неразрывные пробелы. Используйте
=ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ")для замены. - 📄 Символы переноса. Удалите их через
=ПОДСТАВИТЬ(A1;СИМВОЛ(10);""). - 🔍 BOM-метка (U+FEFF). Удалите первый символ, если
=КОДСИМВ(ЛЕВСИМВ(A1))=65279.
Регулярно для обработки данных|Иногда для проверки текста|Раньше не знал(а) о этой функции|Предпочитаю другие способы-->
3. Ошибка #ЗНАЧ! с датами
Excel хранит даты как числа, но ДЛСТР не может работать с ними напрямую. Решение:
=ДЛСТР(ТЕКСТ(A1;"дд.мм.гггг"))
Где A1 содержит дату. Формат "дд.мм.гггг" можно заменить на любой другой (например, "месяц YYYY").
⚠️ Внимание: В Excel для Mac функция ДЛСТР может возвращать некорректные результаты для текста с эмодзи или редкими символами Unicode. Используйте LEN или проверяйте результаты вручную.
ДЛСТР vs ЛЕН vs LEN: в чём разница?
В русскоязычных версиях Excel доступны две идентичные функции:
- 📌 ДЛСТР — локализованная версия (работает только в русском Excel).
- 📌 ЛЕН — русскоязычный аналог английской
LEN(работает в большинстве версий).
В английских и международных версиях используется только LEN. Разницы в работе нет — обе функции подсчитывают количество символов одинаково. Однако:
| Функция | Работает в русском Excel | Работает в английском Excel | Чувствительна к регистру |
|---|---|---|---|
| ДЛСТР | Да | Нет | Да (только заглавные) |
| ЛЕН | Да | Да (как LEN) | Да |
| LEN | Да | Да | Да |
Для кросс-платформенных файлов рекомендуется использовать LEN, чтобы избежать ошибок при открытии на разных языковых версиях. Если вам нужно подсчитать количество байт (а не символов) в строке с учетом кодировки, используйте VBA или функцию BAHTTEXT (для тайского языка) с обходными путями.
Продвинутые техники: ДЛСТР в массивах и с регулярками
Функция ДЛСТР часто используется в комбинации с другими инструментами для сложных задач:
1. Подсчёт символов в диапазоне
Чтобы посчитать общее количество символов в столбце A1:A100:
=СУММПРОИЗВ(ДЛСТР(A1:A100))
Эта формула массива вернёт сумму длин всех ячеек. В старых версиях Excel (до 2019) подтвердите ввод комбинацией Ctrl+Shift+Enter.
2. Извлечение части текста по длине
Чтобы получить первые 5 символов из ячейки A1:
=ЛЕВСИМВ(A1; 5)
А для извлечения последних 3 символов (например, расширения файла):
=ПРАВСИМВ(A1; 3)
3. Проверка формата данных
Допустим, нужно проверить, что в ячейке ровно 10 символов (например, ИНН). Формула:
=ЕСЛИ(ДЛСТР(A1)=10; "Корректно"; "Некорректно")
Для проверки формата email (наличие "@" и точки после неё):
=И(НАЙТИ("@";A1)>1; НАЙТИ(".";A1)>НАЙТИ("@";A1)+1; ДЛСТР(A1)-НАЙТИ(".";A1)>1)
Как обойти ограничение ДЛСТР на 32767 символов?
В Excel ячейка может содержать до 32767 символов, но функция ДЛСТР корректно работает и с более длинными строками, если они получены через формулы (например, =ПОВТОР("а";50000)). Однако при вводе вручную вы получите ошибку. Для обхода ограничения:
1. Разбейте текст на части (например, по 30000 символов).
2. Используйте Power Query для обработки длинных текстов.
3. В VBA используйте функцию LenB для подсчёта байт или Len для символов.
Альтернативы ДЛСТР в современных версиях Excel
В Excel 365 и 2021 появились новые функции для работы с текстом, которые могут заменить или дополнить ДЛСТР:
- 🔢 ДЛБ (
LENB) — подсчитывает количество байт, а не символов. Полезно для работы с многобайтовыми кодировками (например, китайскими иероглифами). - 📊 ТЕКСТПОСЛЕ и ТЕКСТДО — извлекают части строки по разделителю, что упрощает анализ структурированного текста.
- 🔍 ПОИСКБ — ищет позицию подстроки в байтах (аналог
SEARCHB).
Пример использования ДЛБ для кириллицы:
=ДЛБ("Привет") // Вернёт 12 (6 символов × 2 байта каждый в UTF-16)
Для динамических массивов (Excel 365) можно комбинировать ДЛСТР с функциями ФИЛЬТР, СОРТ или УНИК. Например, отсортировать слова по длине:
=СОРТПОУБ(А1:A10; ДЛСТР(A1:A10))
⚠️ Внимание: В Excel для web функция ДЛБ может быть недоступна. Перед использованием проверьте её наличие в вашей версии через автозаполнение формул.
FAQ: Частые вопросы о ДЛСТР
Почему ДЛСТР считает в тексте "А" 2 символа?
Скорее всего, в ячейке есть непечатаемый символ (например, BOM-метка или неразрывный пробел). Проверьте код первого символа через =КОДСИМВ(ЛЕВСИМВ(A1)). Если результат 65279 — это BOM, если 160 — неразрывный пробел. Удалите его вручную или через =ПОДСТАВИТЬ(A1;СИМВОЛ(160);"").
Можно ли с помощью ДЛСТР посчитать количество строк в ячейке?
Да, если строки разделены символом переноса (CHAR(10)). Формула:
=ЕСЛИ(ДЛСТР(A1)=0; 0; ДЛСТР(ПОДСТАВИТЬ(A1; СИМВОЛ(10); "")) - ДЛСТР(A1) + 1)
Она заменяет переносы на пустоту, затем вычитает из длины строки без переносов её исходную длину и добавляет 1 (количество строк = количество переносов + 1).
Как посчитать количество конкретного символа в ячейке?
Используйте комбинацию ДЛСТР и ПОДСТАВИТЬ. Например, для подсчёта запятых:
=ДЛСТР(A1) - ДЛСТР(ПОДСТАВИТЬ(A1; ","; ""))
Формула вычитает из общей длины длину строки без запятых.
Почему ДЛСТР возвращает ошибку #ЗНАЧ! для пустой ячейки?
Ошибка возникает, если ячейка содержит формулу, возвращающую ошибку (например, #Н/Д). Проверьте исходные данные или используйте:
=ЕСЛИОШИБКА(ДЛСТР(A1); 0)
Для truly пустых ячеек ДЛСТР вернёт 0.
Как применить ДЛСТР ко всему столбцу без протягивания формулы?
В Excel 365 используйте динамические массивы:
=ДЛСТР(A1:A1000)
Формула автоматически заполнит соседние ячейки результатами для каждой строки. В старых версиях придётся протягивать маркер заполнения или использовать VBA.