Dodaj zera / zera do istniejących wartości Excela do określonej długości

299

Istnieje wiele, wiele pytań i wysokiej jakości odpowiedzi na temat SO, w jaki sposób zapobiec usuwaniu zer wiodących podczas importowania do lub eksportowania z Excela. Jednak już mam arkusz kalkulacyjny, który zawiera wartości, które zostały obcięte jako liczby, podczas gdy w rzeczywistości powinny być traktowane jako ciągi znaków. Muszę wyczyścić dane i ponownie dodać wiodące zera.

Istnieje pole, które powinno składać się z czterech znaków z zerami wiodącymi wypełniającymi ciąg do czterech znaków. Jednak:

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

Pytanie: Czy istnieje formuła programu Excel, aby wstawić te zera z powrotem na te wartości, aby wszystkie miały cztery znaki?

Uwaga: jest to podobne do odwiecznego problemu z kodem pocztowym, w którym kody pocztowe obszaru Nowej Anglii są usuwane z zera i trzeba je ponownie dodać.

Mark A
źródło
Czy powinien nadejść okres "3829."?
Josh Lee
Nie, ale to właściwa pozycja dla „.” postać w zdaniu według mojej wiernej kopii Strunk & White. Usunięto to dla jasności.
Mark A
7
Zaakceptowałbym to, z wyjątkiem tego, że znajdował się w bloku kodu, w którym staram się brać rzeczy dosłownie. (Ponadto program Excel przechowuje każdą liczbę jako liczbę zmiennoprzecinkową, więc mogło to być miejsce dziesiętne.)
Josh Lee
4
@josh upvote za poprawną pisownię „zaakceptuj to, z wyjątkiem tego”.
Michiel van der Blonk,

Odpowiedzi:

506
=TEXT(A1,"0000")

Jednak funkcja TEKST jest w stanie wykonywać inne wymyślne rzeczy, takie jak formowanie dat.

GSerg
źródło
4
O MÓJ BOŻE! Doskonały! Każdego dnia uczysz się czegoś nowego. Mam nawet wiele książek Excela z psimi uszami i nigdy się z tym nie spotkałem - będę korzystać z nich w dowolnym momencie, gdy w przyszłości będę mieć problemy z kodem pocztowym opartym na programie Excel.
Mark A
1
Działa to dobrze z liczbami dziesiętnymi ... ale co z szesnastkowym? Nie mogę znaleźć sposobu, aby wiodące zera działały z tym ...
Shadow
10
@shadow Szesnastkowa liczba dla programu Excel jest ciągiem, a nie liczbą. Więc obsługiwać go jako ciąg znaków: =RIGHT("0000" + A1, 4).
GSerg
8
@shadow, DEC2HEX zajmuje argument miejsca. Więc =DEC2HEX(HEX2DEC(A1),4)działa dobrze, aby uzupełnić liczby szesnastkowe.
Raz Wilson
9
@mcs Nie zmienili składni. Twoja wersja programu Excel jest używana; jako separator parametrów, który pobiera z ustawień językowych systemu Windows.
GSerg
78

Bardziej efektywnym (mniej natarczywym) sposobem na to jest niestandardowe formatowanie.

  1. Podświetl kolumnę / tablicę, którą chcesz stylizować.
  2. Kliknij ctrl+ 1lub Format -> Formatuj komórki.
  3. Na karcie Liczba wybierz opcję Niestandardowa.
  4. Ustaw formatowanie niestandardowe na 000 #. (zero zero zero #)

Zauważ, że tak naprawdę nie zmienia to wartości komórki. Wyświetla tylko zera wiodące w arkuszu.

Mojżesz
źródło
8
Działa to świetnie, jeśli nie ma potrzeby zachowywania zer wiodących za oryginalną komórką, ale nie działa, jeśli ciągi muszą być użyte gdziekolwiek indziej. Spowodowałoby to wyświetlenie komórek jako 0004, 01032, 0284, ale gdybyś próbował połączyć ciągi w osobnej komórce, pokazałby na przykład 4-1032-284 zamiast pożądanego 0004-01032-0284
Ashton Sheets
@AshtonSheets tak, jak zauważyłem w odpowiedzi, wyświetla tylko zera wiodące, nie robi nic z rzeczywistą wartością. Jednak zdarzały się sytuacje, w których korzystałem z tego zamiast ze =text()względu na wygodę i brak formuły.
Mojżesz
7
Dla porównania, tak naprawdę 0000nie powinno być 000#. W przeciwnym razie nie działa dla 0.
PearsonArtPhoto 17.03.13
2
Dla osób z powyższym problemem odpowiedzią było zamiana # (skrót) na 0 (zero). # Nie daje znaku, gdy nie ma wartości, ale 0 daje zero, gdy nie ma wartości! Ma sens i działa świetnie: 0,0 $ ,, M ”
Andrew
1
Również nie działa dla mnie za pomocą 000 # ale pracował kiedy tylko Określony format niestandardowy 0000 dla liczby czterocyfrowej, 00000 dla pięciu, sześciu na 000.000 itp Oczywiście to jest pomocne tylko dla krótszych liczb wielkoformatowych
Hilary
16

Trafiłem na tę stronę, próbując uzupełnić wartości szesnastkowe, kiedy zdałem sobie sprawę, że DEC2HEX()zapewnia tę funkcję za darmo .

Musisz tylko dodać drugi parametr. Na przykład wiązanie, aby zmienić się 12w 0C
DEC2HEX(12,2)=> 0C
DEC2HEX(12,4)=> 000C
... i tak dalej

MonoThreaded
źródło
9

Nie jestem pewien, czy jest to nowość w programie Excel 2013, ale jeśli klikniesz kolumnę prawym przyciskiem myszy i powiesz „Specjalne”, w rzeczywistości istnieje wstępnie zdefiniowana opcja dla kodu pocztowego i kodu pocztowego + 4. Magia.

wprowadź opis zdjęcia tutaj

ProVega
źródło
6
Świetna sugestia i aktualizacja. Musisz dać Microsoftowi -1 za zachęcanie kogokolwiek do przechowywania numerów SSN w arkuszu kalkulacyjnym.
Mark A
8

Wiem, że odpowiedziano na to jakiś czas temu, ale po prostu drżenie prostego rozwiązania, które mnie dziwi, nie zostało wspomniane.

=RIGHT("0000" & A1, 4)

Ilekroć potrzebuję podkładki, używam czegoś takiego jak wyżej. Osobiście uważam to za najprostsze rozwiązanie i łatwiejsze do odczytania.

zgirod
źródło
1

Jeśli korzystasz z niestandardowego formatowania i chcesz połączyć te wartości w innym miejscu, możesz je skopiować i wkleić Specjalne -> Wartości w innym miejscu w arkuszu (lub na innym arkuszu), a następnie połączyć te wartości.

JeffK627
źródło
1

Nawet to będzie ładnie działać

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

gdzie 2 to całkowita liczba cyfr, dla 0 ~ 9 -> wyświetli od 00 do 09 reszta nic nie zostanie dodane.

użytkownik2902302
źródło