#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, если это визуально.