Добавить начальные нули / 0 к существующим значениям Excel на определенную длину

299

На SO есть много вопросов и качественных ответов о том, как предотвратить удаление начальных нулей при импорте или экспорте из Excel. Тем не менее, у меня уже есть электронная таблица, в которой есть значения, которые были усечены в виде чисел, хотя на самом деле их нужно было обрабатывать как строки. Мне нужно очистить данные и добавить ведущие нули обратно.

Существует поле, которое должно состоять из четырех символов с ведущими нулями, дополняющими строку до четырех символов. Тем не мение:

"23" should be "0023", 
"245" should be "0245", and
"3829" should remain "3829"

Вопрос: Существует ли формула Excel для добавления этих 0 обратно к этим значениям, чтобы все они были четырьмя символами?

Примечание: это похоже на давнюю проблему с почтовым индексом, когда почтовые индексы в районе Новой Англии сбрасывают начальный ноль, и вы должны добавить их обратно.

Марк А
источник
Период должен быть там "3829."?
Джош Ли
Нет, но это правильная позиция для "." персонаж в предложении в соответствии с моей верной копией Strunk & White. Убрал это для наглядности.
Отметить
7
Я бы согласился с этим, за исключением того, что это было в блоке кода, в котором я склонен воспринимать вещи буквально. (Кроме того, Excel хранит каждое число как число с плавающей точкой, так что это мог быть десятичный знак.)
Джош Ли
4
@josh upvote для правильного написания «прими это, кроме этого».
Михель ван дер Блонк

Ответы:

506
=TEXT(A1,"0000")

Тем не менее, функция TEXT может делать и другие интересные вещи, такие как форматирование даты, а также.

GSerg
источник
4
О, МОЙ БОГ! Отлично! Вы узнаете что-то новое каждый день. У меня даже есть несколько книг Excel с ушастыми собаками, и я никогда не сталкивался с этим - буду использовать в любое время, когда буду искажать данные почтового индекса на основе Excel в будущем.
Отметить
1
Это хорошо работает с десятичными числами ... но как насчет шестнадцатеричного? Я не могу найти способ заставить ведущих 0 работать с этим ...
Shadow
10
@shadow Шестнадцатеричное число для Excel - это строка, а не число. Так обрабатывать его как строку: =RIGHT("0000" + A1, 4).
GSerg
8
@shadow, DEC2HEX принимает аргумент места. Так =DEC2HEX(HEX2DEC(A1),4)хорошо работает, чтобы дополнить шестнадцатеричные числа.
Раз Уилсон
9
@mcs Они не меняли синтаксис. Ваша версия Excel используется; в качестве разделителя параметров, который берется из ваших языковых настроек Windows.
GSerg
78

Более эффективный (менее навязчивый) способ сделать это - через пользовательское форматирование.

  1. Выделите столбец / массив, который вы хотите стилизовать.
  2. Нажмите ctrl+ 1или Формат -> Формат ячеек.
  3. На вкладке Number выберите Custom.
  4. Установите пользовательское форматирование на 000 #. (ноль ноль ноль #)

Обратите внимание, что это на самом деле не меняет значение ячейки. Он отображает только ведущие нули на листе.

Моисей
источник
8
Это прекрасно работает, если нет необходимости сохранять начальные нули после исходной ячейки, но не будет работать, если строки нужно использовать где-либо еще. Ячейки будут отображаться как 0004, 01032, 0284, но если вы попытаетесь объединить строки в отдельной ячейке, отобразится, например, 4-1032-284 вместо требуемой 0004-01032-0284
Ashton Sheets
@AshtonSheets да, как я уже отмечал в ответе, он отображает только начальные нули, он не влияет на фактическое значение. Тем не менее, были ситуации, когда я использовал это, а не =text()из-за его удобства и отсутствия необходимой формулы.
Моисей
7
Для справки, это на самом деле должно быть 0000, а не 000#. В противном случае это не работает для 0.
PearsonArtPhoto
2
Для тех, с моей проблемой выше, ответ должен был поменять # (хэш) на 0 (ноль). Знак # не дает вам символа, когда нет значения, а 0 дает ноль, когда значения нет! Имеет смысл и прекрасно работает: $ 0.0 ,, "M"
Андрей
1
Также не работал для меня, используя 000 #, но работал, когда я только указал пользовательский формат как 0000 для четырехзначного числа, 00000 для пяти, 000000 для шести и т. Д. Очевидно, это полезно только для более коротких чисел формата
Хилари
16

Я попал на эту страницу, пытаясь дополнить шестнадцатеричные значения, когда понял, что DEC2HEX()эта функция предоставляется бесплатно .

Вам просто нужно добавить второй параметр. Например, привязка превращается 12в 0C
DEC2HEX(12,2)=> 0C
DEC2HEX(12,4)=> 000C
... и так далее

MonoThreaded
источник
9

Я не уверен, что это новое в Excel 2013, но если вы щелкнете правой кнопкой мыши по столбцу и скажете «Специальный», на самом деле есть предопределенная опция для почтового индекса и почтового индекса + 4. Magic.

введите описание изображения здесь

ProVega
источник
6
Отличное предложение и обновление. Нужно дать Microsoft -1 для поощрения любого хранить SSN в электронной таблице.
Отметить
8

Я знаю, что на это ответили некоторое время назад, но здесь просто не перезвонили с простым решением, которое, как я удивляюсь, не упоминалось.

=RIGHT("0000" & A1, 4)

Всякий раз, когда мне нужно дополнить, я использую что-то вроде выше. Лично я считаю, что это самое простое решение, и его легче читать.

zgirod
источник
1

Если вы используете пользовательское форматирование и вам нужно объединить эти значения в другом месте, вы можете скопировать их и вставить «Специальные» -> «Значения» в другое место на листе (или на другом листе), а затем объединить эти значения.

JeffK627
источник
1

Даже это будет хорошо работать

REPT(0,2-LEN(F2)&F2

где 2 - общее количество цифр, для 0 ~ 9 -> будет отображаться от 00 до 09, в противном случае ничего не будет добавлено.

user2902302
источник