2

Я пытаюсь объединить / объединить числа в разных столбцах в один длинный номер. Некоторые числа имеют начальные нули из-за пользовательских форматов, применяемых к ячейкам. Когда я объединяю их вместе, нули удаляются. Кто-нибудь знает, как должна выглядеть формула, чтобы начальные нули не удалялись?

Пример:
A1 = 08,
B1 = 7,
С1 = 0,
D1 = 17,
E1 = 00,
F1 = 01,
G1 = концентрированное число от А1 до F1

Полученный номер должен быть 0870170001 однако следующий номер появляется 8701701 .

Я использую Excel 2010, и вот формула, которую я попробовал: =CONCATENATE(A1;B1;C1;D1;E1;F1) .

2 ответа2

2

Вам может не понадобиться; но вместо этого используйте запятую, чтобы показать, что каждое отдельное строковое значение (это может зависеть от настроек локализации - спасибо, Боб).

=CONCATENATE(A1,B1,C1,D1,E1,F1)

Однако вам необходимо убедиться, что ячейки с номерами в формате отформатированы в текст, выделив строку и на ленте «Главная» на вкладке «Число» в раскрывающемся списке выберите «Текст».

0

Из вашего комментария я вижу, что ваши ячейки, скорее всего, имеют собственные форматы, и отображаемое значение в этих ячейках, вероятно, отличается от введенного значения (например, "8" отображается как "08"). В этом случае вы можете объединить каждое значение, заключенное в функцию TEXT с указанным форматом ячейки. Например, если A1 имеет пользовательский формат "00", вы должны использовать TEXT(A1,"00") в качестве термина для A1 в вашей формуле объединения. Для полной формулы у вас может быть что-то вроде этого:

=TEXT(A1,"00")&TEXT(B1,"@")&TEXT(C1,"0")&...

Конечно, это утомительно, поскольку требует ручного воссоздания формата каждой ячейки. Если вы собираетесь использовать это много разных форматов, я бы сказал, что это прекрасная возможность использовать функцию VBA для тяжелой работы. Вы можете вставить следующий код в модуль в редакторе VBA (открывается нажатием Alt+F11).

Public Function CONCATwFORMATS(rng1 As Range) As String
Dim tmpstr As String, tmpFormat As String
Dim c As Range

For Each c In rng1
    tmpFormat = c.NumberFormat
    If tmpFormat = "General" Then
        tmpstr = tmpstr & c.Value
    Else
        tmpstr = tmpstr & Format(c.Value, tmpFormat)
    End If
Next c
CONCATwFORMATS = tmpstr
End Function

Затем вы можете использовать следующую формулу в G1 .

=CONCATwFORMATS(A1:F1)

Это просто быстрая попытка использования этого кода, поэтому обратите внимание на два требования функции:

  1. Это только берет непрерывный диапазон в качестве аргумента.
  2. Он объединяет значения в порядке слева направо (и сверху вниз).

Код можно настроить, чтобы снять эти ограничения, но для того, что вы хотите, похоже, это будет работать нормально.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .