Выгрузка данных из 1С:Предприятие в Microsoft Excel часто сопровождается неприятным сюрпризом: числа приходят с пробелами в качестве разделителей тысяч. Например, вместо 1000000 вы получаете 1 000 000. Такие значения Excel воспринимает как текст, что ломает формулы, сводные таблицы и графики. Проблема усугубляется, если выгружаются сотни строк — ручная правка отнимает часы.
В этой статье разберём 5 проверенных способов автоматизированного удаления пробелов из чисел, включая формулы Excel, макросы VBA, инструменты Power Query и настройки выгрузки непосредственно в 1С. Особое внимание уделим нюансам, которые возникают при работе с большими объёмами данных (10 000+ строк) и специфическими форматами (валюта, проценты).
Важно: методы подходят для всех версий Excel (2010–2023) и актуальных релизов 1С:Предприятие 8.3. Если вы используете облачную версию 1С:Fresh или Excel Online, некоторые способы могут потребовать адаптации — об этом предупредим отдельно.
Почему пробелы появляются в числах при выгрузке из 1С
Проблема кроется в настройках региональных стандартов и форматов данных. 1С:Предприятие по умолчанию следует российским стандартам отображения чисел, где пробел используется как разделитель тысяч (в отличие от англоязычных систем, где для этого служит запятая). При экспорте в Excel эти настройки сохраняются, но:
- 📌 Excel по умолчанию ожидает числа без пробелов или с запятыми/точками в качестве разделителей.
- 📌 Если ячейка содержит пробел, Excel автоматически присваивает ей текстовый формат, блокируя математические операции.
- 📌 В некоторых версиях 1С пробелы добавляются даже к дробным числам (например,
1 000,50вместо1000.5).
Ключевой момент: проблема не в ошибке программы, а в конфликте форматов. Решить её можно либо на этапе выгрузки из 1С, либо уже в Excel. Далее рассмотрим оба подхода.
⚠️ Внимание: Если вы работаете с 1С:Бухгалтерия 3.0 или 1С:ERP, проверьте настройки обмена данными в разделе Администрирование → Печатные формы, отчеты и обработки → Настройки обмена. В некоторых конфигурациях есть опция "Сохранять формат чисел при экспорте" — её отключение может решить проблему без дополнительных манипуляций в Excel.
Способ 1: Замена пробелов через "Найти и заменить" (самый быстрый)
Если вам нужно однократно очистить небольшой файл (до 5 000 строк), самый простой способ — стандартная функция Excel Найти и заменить. Она работает во всех версиях программы и не требует знаний формул.
- Выделите диапазон ячеек с числами (или нажмите
Ctrl + A, чтобы выбрать весь лист). - Нажмите
Ctrl + H(или перейдите на вкладкуГлавная → Найти и выделить → Заменить). - В поле
Найтивведите пробел (один символ). - Поле
Заменить наоставьте пустым. - Нажмите
Заменить все.
Excel покажет количество выполненных замен. После этого числа автоматически преобразуются в числовой формат (если этого не произошло, выделите ячейки и выберите формат Числовой на вкладке Главная).
☑️ Проверка после замены пробелов
⚠️ Внимание: Этот метод не работает с неразрывными пробелами (которые иногда добавляет 1С при экспорте в PDF или HTML). Чтобы удалить их, в полеНайтивведитеAlt + 0160(удерживая Alt, наберите 0160 на цифровой клавиатуре).
Преимущества способа:
- ⚡ Быстро (занимает секунды даже для 1 000 строк).
- 🛠 Не требует знаний формул или VBA.
- 🔄 Работает в Excel Online и мобильных версиях.
Недостатки:
- 🚫 Не подходит для автоматизации (придётся повторять вручную).
- 📉 Может сломать данные, если пробелы используются как разделители в тексте (например, в адресах).
Способ 2: Формулы Excel для удаления пробелов и преобразования в числа
Если вам нужно сохранить исходные данные и создать очищенную копию, используйте формулы. Этот метод подходит для регулярной обработки и позволяет гибко настраивать правила преобразования.
Вариант 1: Функция ЗАМЕНИТЬ + ЗНАЧЕН
Самая универсальная формула:
=ЗНАЧЕН(ЗАМЕНИТЬ(A1; " "; ""))
Как это работает:
ЗАМЕНИТЬ(A1; " "; "")— удаляет все пробелы из ячейкиA1.ЗНАЧЕН()— преобразует результат в число.
Скопируйте формулу в соседний столбец, затем протяните её вниз. После этого можно заменить столбец с формулами на значения (Копировать → Специальная вставка → Значения).
Вариант 2: Функция ПОДСТАВИТЬ (для неразрывных пробелов)
Если в данных есть неразрывные пробелы (код CHAR(160)), используйте:
=ЗНАЧЕН(ПОДСТАВИТЬ(A1; СИМВОЛ(160); ""))
Вариант 3: Комбинация для дробных чисел
Если числа содержат и пробелы, и запятые (например, 1 000,50), сначала замените запятую на точку (для английского формата), затем удалите пробелы:
=ЗНАЧЕН(ЗАМЕНИТЬ(ПОДСТАВИТЬ(A1; ","; "."); " "; ""))
| Исходные данные | Формула | Результат |
|---|---|---|
1 000 500 |
=ЗНАЧЕН(ЗАМЕНИТЬ(A1; " "; "")) |
1000500 (числовой формат) |
2 500,30 |
=ЗНАЧЕН(ЗАМЕНИТЬ(ПОДСТАВИТЬ(A1; ","; "."); " "; "")) |
2500.3 (числовой формат) |
1 000 000 € |
=ЗНАЧЕН(ПОДСТАВИТЬ(ЗАМЕНИТЬ(A1; " "; ""); "€"; "")) |
1000000 |
Если после применения формул числа отображаются с экспонентой (например, 1E+06 вместо 1000000), увеличьте ширину столбца или измените формат ячейки на "Числовой" без разделителей.
Преимущества формульного подхода:
- 🔄 Позволяет обрабатывать данные выборочно (например, только ячейки с пробелами).
- 📊 Сохраняет исходные данные нетронутыми.
- 🤖 Легко автоматизируется через Power Query (см. Способ 4).
Способ 3: Макрос VBA для массовой очистки
Если вы регулярно работаете с большими файлами (10 000+ строк), ручная замена или формулы могут тормозить Excel. В этом случае поможет макрос VBA, который очистит все пробелы в выбранном диапазоне за секунды.
Инструкция:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module. - Вставьте следующий код:
Sub RemoveSpacesFromNumbers()Dim rng As Range
Dim cell As Range
Set rng = Selection
For Each cell In rng
If IsNumeric(Replace(cell.Value, " ", "")) Then
cell.Value = Val(Replace(cell.Value, " ", ""))
cell.NumberFormat = "0" ' Формат без разделителей
End If
Next cell
End Sub
- Закройте редактор VBA.
- Выделите диапазон с числами и запустите макрос (
Alt + F8 → Выбрать).RemoveSpacesFromNumbers→ Выполнить
Макрос проверяет, можно ли преобразовать значение в число после удаления пробелов, и применяет изменения только к таким ячейкам. Это защищает от ошибок, если в диапазоне есть текстовые данные с пробелами (например, ФИО или адреса).
Как адаптировать макрос для неразрывных пробелов?
Замените строку cell.Value = Val(Replace(cell.Value, " ", "")) на:
cell.Value = Val(Replace(cell.Value, Chr(160), ""))
где Chr(160) — это неразрывный пробел.
⚠️ Внимание: Перед первым запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов). В противном случае Excel заблокирует выполнение кода.
Преимущества макроса:
- ⚡ Обрабатывает десятки тысяч строк за секунды.
- 🔒 Безопасен для текстовых данных (не ломает ФИО, адреса и т.д.).
- 📌 Можно доработать под специфические форматы (например, валюту).
Недостатки:
- 🛠 Требует базовых знаний VBA (или готовности скопировать код).
- 🚫 Не работает в Excel Online.
Способ 4: Power Query — автоматическая очистка при импорте
Power Query (в Excel 2016+ и Excel 365) — это инструмент для ETL-обработки (извлечение, преобразование, загрузка данных). Он позволяет создавать повторяемые сценарии очистки, которые будут применятся при каждом импорте данных из 1С.
Пошаговая инструкция:
- Импортируйте данные из 1С в Excel через
Данные → Получить данные → Из файла → Из рабочей книги(или напрямую из.xls/.csv). - В открывшемся окне Power Query выделите столбец с числами.
- Перейдите на вкладку
Преобразованиеи выберитеЗаменить значения. - В поле
Значение для поискавведите пробел, оставьте полеЗаменить напустым. - Нажмите
ОК, затемЗакрыть и загрузить.
Чтобы автоматизировать процесс:
- 📌 Сохраните запрос (
Главная → Закрыть и загрузить → Закрыть и загрузить в...). - 🔄 При следующем импорте данных из 1С просто обновите запрос (
Данные → Обновить все).
Power Query — единственный способ, который позволяет сохранить шаги очистки и применять их автоматически к новым данным. Это идеальное решение для еженедельных/ежедневных отчётов.
Дополнительные возможности Power Query:
- 🔧 Замена запятых на точки для дробных чисел.
- 📊 Разделение столбцов (например, отделение валюты от суммы).
- 🔍 Фильтрация пустых строк или ошибочных значений.
⚠️ Внимание: Если вы используете 1С:УТ 11 или 1С:ERP, проверьте, не добавляет ли конфигурация непечатаемые символы (например, табуляцию или перевод строки) вместо пробелов. В Power Query их можно удалить черезПреобразование → Чистка → Обрезатьили функциюText.Cleanв редакторе формул.
Способ 5: Настройка выгрузки непосредственно в 1С
Самый корректный способ решить проблему — настроить выгрузку данных в 1С так, чтобы числа экспортировались без пробелов. Это избавит от необходимости постобработки в Excel.
Вариант 1: Изменение формата выгрузки в обработке
Если вы используете стандартную обработку выгрузки (например, ВыгрузкаДанныхВExcel):
- Откройте обработку в режиме
1С:Предприятие. - Найдите параметр
ФорматЧисел(или аналогичный). - Установите значение
ЧислоБезРазделителейилиАнглийскийФормат. - Сохраните настройки и повторите выгрузку.
Вариант 2: Редактирование макета выгрузки
Для пользовательских отчётов:
- Откройте макет отчёта в конфигураторе (
Файл → Открыть конфигурацию). - Найдите поле с числовым значением и измените его формат на
ЧГ0(число без разделителей). - Сохраните изменения и обновите отчёт.
Вариант 3: Использование запроса с форматированием
Если данные выгружаются через запрос, добавьте функцию Формат() с параметром "ЧГ=0":
ВЫБРАТЬ
Формат(Сумма, "ЧГ=0") КАК СуммаБезПробелов
ИЗ
Документ.РеализацияТоваровУслуг
Это гарантирует, что числа будут экспортироваться без пробелов независимо от региональных настроек.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:Бухгалтерия 3.0) изменения формата выгрузки могут потребовать прав доступаАдминистраторилиРедактирование конфигурации. Если у вас нет таких прав, обратитесь к IT-отделу или партнёру 1С.
Преимущества настройки в 1С:
- 🎯 Решает проблему на корню — данные приходят в Excel уже в правильном формате.
- 🔄 Не требует постобработки.
- 📈 Подходит для автоматизированных обменов (например, через RPA или 1С:EDT).
Сравнение методов: какой выбрать?
Выбор способа зависит от объёма данных, частоты обработки и ваших технических навыков. Ниже — сравнительная таблица:
| Метод | Скорость | Автоматизация | Сложность | Подходит для |
|---|---|---|---|---|
| Найти и заменить | ⚡ Быстро | ❌ Нет | ⭐⭐⭐ (просто) | Разовые задачи, небольшие файлы |
| Формулы Excel | 🐢 Медленно для больших данных | ⚠️ Частично (через Power Query) | ⭐⭐⭐⭐ (нужны знания функций) | Регулярная обработка с сохранением исходников |
| Макрос VBA | ⚡⚡ Очень быстро | ✅ Да | ⭐⭐⭐⭐ (нужны базовые навыки VBA) | Большие файлы, повторяющиеся задачи |
| Power Query | ⚡ Быстро | ✅ Полная | ⭐⭐⭐⭐ (нужно изучить интерфейс) | Автоматизированные отчёты, ETL |
| Настройка 1С | ⚡ Мгновенно | ✅ Полная | ⭐⭐⭐⭐⭐ (требует доступа к конфигурации) | Постоянное решение для всех пользователей |
Рекомендации:
- 📌 Для разовой очистки небольшого файла используйте
Найти и заменить. - 📊 Если нужно сохранить исходные данные и создать "чистую" копию — формулы Excel.
- 🤖 Для еженедельных отчётов (10 000+ строк) настройте Power Query или макрос VBA.
- 🔧 Если вы администратор 1С, измените формат выгрузки на уровне конфигурации.
Наиболее универсальное решение — комбинация Power Query (для импорта) и настройки 1С (для экспорта). Это гарантирует чистые данные на обоих этапах обмена.
Частые ошибки и как их избежать
При удалении пробелов из чисел пользователи часто сталкиваются с неожиданными проблемами. Вот самые распространённые из них и способы их решения:
1. Числа превращаются в даты
Если после удаления пробелов Excel преобразует числа в даты (например, 10-100 становится 10 окт), значит:
- 📅 В данных остались дефисы или точки, которые Excel воспринял как разделители дат.
- 🔢 Решение: Используйте формулу
=ЗНАЧЕН(ПОДСТАВИТЬ(ЗАМЕНИТЬ(A1; " "; ""); "-"; ""))или предварительно отформатируйте столбец какТекстовый.
2. Появляется ошибка #ЗНАЧ!
Ошибка #ЗНАЧ! означает, что Excel не может преобразовать текст в число. Причины:
- 🔍 В ячейке остались невидимые символы (неразрывные пробелы, табуляция).
- 💰 Число содержит символы валют (например,
1 000 $). - 📌 Решение: Используйте
=ЧИСТ(ЗАМЕНИТЬ(A1; " "; ""))для удаления непечатаемых символов или вручную очистите данные от посторонних знаков.
3. Формулы не протягиваются на все строки
Если при протягивании формулы вниз она "застревает" на определённой строке:
- 🔗 Проверьте, нет ли в данных объединённых ячеек.
- 📉 Убедитесь, что в настройках Excel отключён
Автоматический расчёт(Формулы → Параметры вычислений → Автоматически). - 🔄 Решение: Выделите диапазон, нажмите
Ctrl + D(заполнить вниз).
4. После очистки числа отображаются как ######
Символы ###### означают, что:
- 📏 Ширина столбца слишком мала для отображения числа.
- 🕒 Число отрицательное или содержит ошибку формата.
- 🔢 Решение: Расширьте столбец или проверьте формат ячейки (
Числовойбез разделителей).
⚠️ Внимание: Если вы работаете с очень большими числами (более 15 знаков), Excel может округлить их до научного формата (например,1.23E+15). Чтобы избежать этого, предварительно отформатируйте ячейки какТекстовый, а затем примените формулу=ЗАМЕНИТЬ(A1; " "; "")безЗНАЧЕН().
FAQ: Ответы на частые вопросы
Можно ли удалить пробелы в числах прямо при выгрузке из 1С в CSV?
Да, но для этого нужно отредактировать обработку выгрузки в 1С. В макете выгрузки найдите параметр, отвечающий за формат чисел, и установите значение ЧГ0 (число без разделителей). Если вы используете стандартную обработку, создайте её копию и модифицируйте:
- Откройте обработку в конфигураторе.
- Найдите процедуру, где формируется строка для CSV.
- Добавьте функцию
СтрЗаменить(Строка(Число), " ", "")перед записью в файл.
Альтернатива: экспортируйте данные в .xlsx вместо .csv и очищайте пробелы в Excel (см. Способ 1 или 2).
Почему после удаления пробелов числа отображаются с точкой вместо запятой (например, 1.000 вместо 1,00)?
Это происходит из-за региональных настроек Excel. Точка как разделитель тысяч используется в англоязычной локализации. Чтобы вернуть запятую:
- Перейдите в
Файл → Параметры → Дополнительно. - В разделе
Параметры редактированияснимите галочкуИспользовать системные разделители. - Установите вручную разделитель тысяч —
пробелилизапятая.
Если нужно сохранить русский формат чисел, но убрать пробелы, используйте формулу:
=ПОДСТАВИТЬ(ЗАМЕНИТЬ(A1; " "; ""); "."; ",")
Как удалить пробелы в числах на Mac (Excel для macOS)?
Все описанные методы работают и в Excel для Mac, но есть нюансы:
- 🔹 Сочетание клавиш для вызова
Найти и заменить:Command + H(вместоCtrl + H). - 🔹 В Excel 2016–2019 для Mac нет встроенного Power Query. Установите надстройку
Power Queryиз Microsoft Store или используйте альтернативы (например, Apple Numbers с функциейЗАМЕНИТЬ). - 🔹 Макросы VBA работают, но для их включения нужно разрешить выполнение скриптов в
Системных настройках → Защита и безопасность.
Для Excel Online на Mac доступны только методы Найти и заменить и формулы.
Можно ли автоматизировать очистку пробелов для еженедельных отчётов?
Да, и для этого есть несколько способов:
- Power Query:
- Создайте запрос, который подключается к файлу/базе 1С и очищает пробелы при каждом обновлении.
- Настройте автоматическое обновление по расписанию (
Данные → Обновить все → Свойства → Параметры обновления).
Private Sub Workbook_Open()
Call RemoveSpacesFromNumbers ' Вызов вашего макроса при открытии файла
End Sub
Этот код будет запу