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

Объединение даты и числовых значений в Microsoft Excel — одна из самых частых задач при работе с отчётами, инвентаризацией или генерацией уникальных идентификаторов. Например, вам может понадобиться создать номер заказа в формате «2026-05-15_#0042» или сгенерировать метку времени для лог-файла «15.05.2026_13:45_Партия78». Казалось бы, что здесь сложного? Но на практике пользователи сталкиваются с массой подводных камней: от некорректного отображения форматов до ошибок при сортировке таких данных.

В этой статье мы разберём 5 проверенных способов сцепления даты и номера — от базовых функций ТЕКСТ() и CONCAT() до продвинутых методов с Power Query и VBA. Вы узнаете, как избежать типичных ошибок (например, когда дата превращается в число типа 45423), как добавить разделители и ведущие нули, а также как автоматизировать процесс для тысяч строк. Особое внимание уделим форматированию результата, чтобы объединённые данные оставались пригодными для дальнейшей обработки — фильтрации, поиска или экспорта в другие системы.

Если вы работаете с Excel 365, Excel 2019 или более ранними версиями, здесь найдёте решения для каждого случая. А для тех, кто хочет углубиться, мы приведём примеры с динамическими массивами и пользовательскими функциями.

1. Базовый способ: функция ТЕКСТ() + конкатенация (&)

Самый простой и универсальный метод — использовать оператор & (амперсанд) в сочетании с функцией ТЕКСТ(). Последняя позволяет привести дату к нужному текстовому формату, а оператор & — сцепить её с номером.

Допустим, в ячейке A2 у вас дата (15.05.2026), а в B2 — номер (42). Чтобы получить результат «15.05.2026-42», введите формулу:

=ТЕКСТ(A2; "дд.мм.гггг") & "-" & B2

Здесь "дд.мм.гггг" — это формат отображения даты. Вы можете заменить его на любой другой, например:

  • 📅 "дд-мм-гг"15-05-24
  • 📅 "гггг-мм-дд"2026-05-15 (ISO-формат, удобен для сортировки)
  • 📅 "д ммм гггг"15 мая 2026

Если номер хранится как текст (например, «#0042»), а не число, формула останется той же. Но если в ячейке B2 просто число 42, а вам нужны ведущие нули (0042), добавьте функцию ТЕКСТ() и для номера:

=ТЕКСТ(A2; "дд.мм.гггг") & "-" & ТЕКСТ(B2; "0000")

2. Функция CONCAT() и ОБЪЕДИНИТЬ(): гибкость и совместимость

В Excel 2016 и новее появилась функция CONCAT() (или её русский аналог ОБЪЕДИНИТЬ()), которая упрощает сцепление нескольких значений. Её преимущество — возможность указывать диапазоны ячеек вместо отдельных ссылок.

Пример для тех же данных (A2 — дата, B2 — номер):

=CONCAT(ТЕКСТ(A2; "дд.мм.гггг"); "-"; B2)

или для русской версии:

=ОБЪЕДИНИТЬ(ТЕКСТ(A2; "дд.мм.гггг"); "-"; B2)

Главное отличие от оператора &CONCAT() автоматически игнорирует пустые ячейки. Это удобно, если у вас не все строки заполнены. Например, формула:

=CONCAT(ТЕКСТ(A2:A10; "дд.мм"); "-"; B2:B10)

обработает только те строки, где есть и дата, и номер.

Однако будьте осторожны: если в диапазоне есть ошибки (например, #ЗНАЧ!), CONCAT() вернёт первую попавшуюся ошибку. В таких случаях лучше использовать & с проверкой на ошибки функцией ЕСЛИОШИБКА().

📊 Какой версии Excel вы пользуетесь?
Excel 365
Excel 2019
Excel 2016
Excel 2013 или старше

3. Динамические массивы: объединение столбцов за одну формулу

Если вам нужно сцепить даты и номера для всего столбца (например, с A2:A100 по B2:B100), в Excel 365 и Excel 2021 это можно сделать одной формулой благодаря динамическим массивам.

Введите в первую ячейку результата (например, C2):

=ТЕКСТ(A2:A100; "дд.мм.гггг") & "-" & ТЕКСТ(B2:B100; "0000")

и нажмите Enter. Формула автоматически «прольётся» на все строки диапазона. Это избавляет от необходимости копировать её вниз.

Если вам нужны дополнительные разделители или префиксы (например, «Заказ_15.05.2026_0042»), модифицируйте формулу:

="Заказ_" & ТЕКСТ(A2:A100; "дд.мм.гггг") & "_" & ТЕКСТ(B2:B100; "0000")

Обратите внимание: динамические массивы работают только в последних версиях Excel. В Excel 2019 и старше такая формула вернёт ошибку #ЗНАЧ!. В этом случае используйте классический метод с копированием формулы вниз.

Почему формула не «проливается» вниз?

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

1. Версию Excel (должна быть 365 или 2021).

2. Наличие данных в соседних столбцах (Excel может ограничить диапазон автоматически).

3. Формат ячеек (должен быть «Общий» или «Текстовый»).

Если проблема остаётся, попробуйте ввести формулу как массив старого типа: выделите диапазон C2:C100, введите формулу и нажмите Ctrl+Shift+Enter (в старых версиях).

4. Power Query: объединение с предварительной обработкой

Если данные поступают из внешних источников (например, CSV, SQL или JSON), удобнее использовать Power Query — инструмент для преобразования данных. Он позволяет не только сцепить дату и номер, но и очистить их от лишних символов, заменить форматы или добавить префиксы.

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

  1. Выделите исходные данные и перейдите на вкладку Данные → Из таблицы/диапазона (или Get Data → From Table/Range в английской версии).
  2. В открывшемся редакторе Power Query выделите столбец с датой, кликните правой кнопкой и выберите Преобразовать → Формат → Дата (убедитесь, что Excel правильно распознал формат).
  3. Добавьте новый столбец: Добавить столбец → Пользовательский столбец.
  4. Введите формулу для объединения. Например:
    [Дата] & "-" & Text.PadStart(Text.From([Номер]), 4, "0")

    Здесь Text.PadStart добавляет ведущие нули к номеру (аналог ТЕКСТ(B2; "0000") в Excel).

  5. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Преимущество Power Query — возможность сохранить шаги преобразования и обновлять данные одним кликом. Это особенно полезно, если исходные данные меняются ежедневно (например, выгрузки из 1С или CRM).

Если вам нужно объединить несколько столбцов (например, дату, номер и название), формула в Power Query может выглядеть так:

[Дата] & "_" & Text.PadStart(Text.From([Номер]), 4, "0") & "_" & [Название]

🔹 Проверить формат столбца с датой (должен быть "Дата", а не "Текст")

🔹 Удалить лишние пробелы в номерах (инструмент "Очистить → Обрезать")

🔹 Заменить ошибки (например, #Н/Д) на пустые значения

🔹 Сохранить запрос для повторного использования-->

5. VBA: автоматизация для сложных задач

Если вам нужно сцеплять даты и номера по сложным правилам (например, добавлять префиксы в зависимости от месяца или проверять номера на уникальность), на помощь придёт VBA. Ниже приведён пример макроса, который объединяет данные из столбцов A (дата) и B (номер) в столбец C, добавляя ведущие нули и разделитель:

Sub CombineDateAndNumber()

Dim ws As Worksheet

Dim lastRow As Long

Dim i As Long

Set ws = ActiveSheet

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

For i = 2 To lastRow ' Предполагаем, что заголовки в 1 строке

If IsDate(ws.Cells(i, 1).Value) And IsNumeric(ws.Cells(i, 2).Value) Then

ws.Cells(i, 3).Value = Format(ws.Cells(i, 1).Value, "dd.mm.yyyy") & "-" & _

Format(ws.Cells(i, 2).Value, "0000")

Else

ws.Cells(i, 3).Value = "Ошибка данных"

End If

Next i

End Sub

Чтобы использовать этот код:

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

Макрос проверяет, что в ячейке A действительно дата, а в B — число. Если данные некорректны, в столбец C записывается «Ошибка данных». Вы можете модифицировать код, чтобы:

  • 📌 Добавлять префиксы (например, «INV-» для счетов).
  • 📌 Пропускать пустые строки.
  • 📌 Сохранять результат в другом листе.

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

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

Проблема Причина Решение
Дата отображается как число (например, 45423) Excel хранит даты как количество дней с 1900 года. Без ТЕКСТ() он показывает это число. Используйте =ТЕКСТ(A2; "дд.мм.гггг").
Номер без ведущих нулей (например, 42 вместо 0042) Excel по умолчанию убирает ведущие нули у чисел. Примените формат ТЕКСТ(B2; "0000") или измените формат ячейки на «Текстовый».
Ошибка #ЗНАЧ! в формуле Один из аргументов содержит ошибку или несовместимый тип данных. Проверьте исходные данные на наличие ошибок. Используйте ЕСЛИОШИБКА().
Результат не сортируется правильно Текстовые даты (например, 15.05.2026) сортируются как строки, а не как даты. Используйте формат "гггг-мм-дд" для корректной сортировки.

Ещё одна частая ошибка — несоответствие форматов при экспорте данных. Например, если вы объединили дату и номер в формате «15.05.2026-42», а затем экспортировали в CSV, другая программа может воспринять это как одну текстовую строку и не распарсить обратно на дату и номер. Чтобы избежать проблем:

  • 📌 Используйте уникальные разделители (например, | или ; вместо -).
  • 📌 Сохраняйте исходные столбцы с датой и номером отдельно.
  • 📌 Документируйте формат (например, в заголовке файла).
=ДАТАЗНАЧ(ЛЕВСИМВ(C2; 10))

где 10 — количество символов в дате (15.05.2026).-->

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

Как объединить дату и номер, если номер хранится как текст с префиксом (например, "INV-42")?

Если номер уже содержит префикс (например, «INV-42»), просто сцепляйте его с датой без дополнительных преобразований:

=ТЕКСТ(A2; "дд.мм.гггг") & "_" & B2

Результат: 15.05.2026_INV-42.

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

=ТЕКСТ(A2; "дд.мм.гггг") & "_INV-" & ТЕКСТ(B2; "0000")
Можно ли автоматически обновлять объединённые данные при изменении исходных?

Да, для этого подойдут:

  • 🔄 Формулы Excel (обновляются при изменении зависимых ячеек).
  • 🔄 Power Query (обновляются кнопкой «Обновить» или автоматически при открытии файла).
  • 🔄 VBA (нужно запускать макрос вручную или привязать к событию, например, изменению листа).

Для полной автоматизации настройте Worksheet_Change в VBA:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Me.Range("A2:B100")) Is Nothing Then

Call CombineDateAndNumber

End If

End Sub

Этот код будет запускать макрос при любом изменении в диапазоне A2:B100.

Как сцепить дату, номер и время в одной ячейке?

Используйте функцию ТЕКСТ() для каждого компонента с нужным форматом. Например, для результата «15.05.2026 14:30 #0042»:

=ТЕКСТ(A2; "дд.мм.гггг чч:мм") & " #" & ТЕКСТ(B2; "0000")

Если время хранится в отдельной ячейке (например, C2), модифицируйте формулу:

=ТЕКСТ(A2; "дд.мм.гггг") & " " & ТЕКСТ(C2; "чч:мм") & " #" & ТЕКСТ(B2; "0000")
Почему после объединения дата и номер не фильтруются как нужно?

Скорее всего, результат объединения хранится как текст, а не как дата или число. Чтобы исправить:

  • 🔍 Для фильтрации по дате: добавьте вспомогательный столбец с функцией =ДАТАЗНАЧ(ЛЕВСИМВ(C2; 10)) (где 10 — длина даты в символах).
  • 🔍 Для фильтрации по номеру: извлеките номер функцией =ПРАВСИМВ(C2; 4) (если номер всегда 4 символа).
  • 🔍 Используйте условное форматирование для визуального выделения нужных строк.

Alternatively, сохраните исходные столбцы с датой и номером отдельно и фильтруйте по ним.

Можно ли объединить дату и номер без разделителя?

Да, просто удалите разделитель из формулы. Например:

=ТЕКСТ(A2; "ддммгггг") & ТЕКСТ(B2; "0000")

Результат: 150520260042.

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