Excel: Как добавить начальный ноль к строке чисел, разделенных запятой, если число меньше 8 цифр?

#excel #vba #excel-formula

#excel #vba #excel-формула

Вопрос:

Я использовал =IF(A2=A1,C1amp;","amp;B2,B2) для объединения строки связанных артикулов из нескольких строк в одну ячейку. Проблема в том, что некоторые артикулы начинаются с 0, и это было удалено с помощью формулы. (Кроме того, некоторые строки отображаются как ячейки с ошибкой с красным текстом и заливкой. В сообщении об ошибке говорится, что это число, сохраняемое в виде текста. Но это не так с каждым из них, и я не знаю почему.)

Все артикулы содержат 8 цифр, поэтому неправильные будут содержать 7 цифр. Например:

Выглядит так: 4286 000,4286800,4310001,4310801,14872001,14872801,14877001,14877801

Должно быть: 04286000,04286800,04310001,04310801,14872001,14872801,14877001,14877801

Я попробовал =TEXT функцию и получил забавный (неправильный) результат. Например, в строке, где все шесть артикулов нуждаются в начальном нуле, я добавил 48 нулей в разделе format_text функции, с запятыми после каждых 8 нулей. Он ставит запятые через каждые три цифры, в основном выводя как большое одиночное число.

Это то, что можно решить с помощью формул, или для этого требуется VBA?

Комментарии:

1. =IF(A2=A1,C1amp;",","")amp;TEXT(B2,"00000000")

Ответ №1:

Аналогично комментарию tigeravatar, который вернет строку вместо числа, но будет содержать начальный ноль:

 =RIGHT("00000000"amp;B2,8)

or

=RIGHT("00000000"amp;MAX(len(B2),8))
  

По сути, он добавляет 8 нулей спереди, а затем принимает последние 8 символов. Или в случае второй формулы потребуется минимум 8 символов и максимум длины того, что уже есть в ячейке. Если вы знаете, что у вас есть только минимум 7 символов, тогда вы могли бы просто добавить 1 ноль.

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

 =REPT("0",MAX(8-LEN(B2),0))amp;B2
  

Максимальное значение указано там на случай, если у вас число длиннее, что приведет к отрицательному значению для REPT. В этом случае MAX вернул бы 0 вместо этого, избегая ошибки с REPT . Результатом этой формулы также является строка.

Если вы хотите видеть начальный ноль, но сохранить значение ячейки в виде числа, то вам нужно будет применить к ячейке пользовательское форматирование. Просто помните, что, хотя нуля на самом деле там нет, если вы пойдете этим путем, ячейка будет отображать данные длиной всего в 8 цифр.

Ответ №2:

Вы могли бы просто изменить форматирование ячейки на пользовательское 00000000, если это визуально.