2008-08-22 04:31:59 +0000 2008-08-22 04:31:59 +0000
77
77

Formatuj liczbę z opcjonalnym miejscem po przecinku w Excelu

Mam liczby w komórkach w Excelu. Chcę, aby liczby były sformatowane tak, że jeśli mają miejsca po przecinku, to pokazują maksymalnie dwa, a jeśli nie mają miejsc po przecinku, to nie pokazują żadnego.

Na przykład.

  • 15 powinno być sformatowane jako 15, nie 15.00
  • 14.3453453 powinno być sformatowane jako 14.35
  • 12.1 powinno być sformatowane jako 12.1
  • 0 powinno być sformatowane jako

Najbliższy niestandardowy kod formatu, jaki wymyśliłem, to 0.##. Niestety formatuje to 15.00 jako 15. (zwróć uwagę na dodatkowy przecinek dziesiętny).

Aby jeszcze bardziej skomplikować sprawę, arkusz kalkulacyjny jest wynikiem eksportu z SQL Server Reporting Services. Zatem żadne makra nie są możliwe. No cóż, wygląda na to, że 0.## jest moim najlepszym rozwiązaniem, a oni mogą po prostu żyć z dodatkową kropką.

Odpowiedzi (9)

33
33
33
2012-05-08 18:16:49 +0000

Alternatywnie, można rozwiązać problem “opcjonalnego” przecinka dziesiętnego za pomocą następującego rozwiązania:

Format liczby: General;[Red](General)

To doda odpowiednio miejsce dziesiętne i wartość ułamkową, jednocześnie formatując liczby ujemne w bardziej czytelny sposób.

Jeśli chodzi o oryginalne pytanie plakatu, nadal musisz zaokrąglić / skrócić “dodatkowe” punkty dziesiętne za pomocą formuły. Jest to jednak prosta formuła =ROUND(<value>,<desired decimal places>), która nie jest niezwykle kosztowna obliczeniowo.

Przykłady:

2500 -> 2500
0.25 -> 0.25
-2500 -> (2500)
-0.25 -> (0.25)
15
15
15
2008-09-07 17:09:26 +0000

Formaty niestandardowe programu Excel mogą dać częściową odpowiedź

Formaty niestandardowe dla liczb w programie Excel są wprowadzane w tym formacie:

  • format liczby dodatniej;format liczby ujemnej;format zera;format tekstu

Jednym z formatów, który zbliża się do Twojego wymagania, ale pozostawia w miejscu dziesiętnym dla liczb bez przecinków jest:

  • # ,##…??;(#,##…?);0

Przykład:

  • 15 jest wyświetlane jako 15.
  • 14.3453453 jest wyświetlane jako 14.35
  • 12.1 jest wyświetlane jako 12.1
  • 0 jest wyświetlane jako 0
5
5
5
2011-08-26 00:28:32 +0000

Oto jedna z metod wykorzystująca formatowanie warunkowe.

  1. Kliknij prawym przyciskiem myszy komórkę, wybierz “Formatuj komórkę”
  2. Wybierz “Niestandardowe”
  3. Wpisz “0.####” (dodaj więcej lub mniej znaków #, aby kontrolować maksymalną liczbę miejsc po przecinku)
  4. Kliknij OK
  5. Mając nadal zaznaczoną komórkę, użyj “Formatowania warunkowego” (może to być pozycja menu w Format lub przycisk w Home, w zależności od wersji Excela)
  6. Dodaj nową regułę, opartą na formule “=MOD(H32,1)=0”

  7. Dla formatu tej reguły wybierz zakładkę liczby, wybierz “Niestandardowy”

  8. Tym razem wpisz formułę “0”

  9. Kliknij OK odpowiednią ilość razy, aby powrócić do arkusza (różni się w zależności od wersji Excela)

Proszę bardzo, korzystaj odpowiedzialnie! Jeśli chcesz skopiować format do innych komórek, pamiętaj, że możesz skopiować komórkę i użyć opcji “Wklej Specjalnie” z opcją “Format”.

5
5
5
2010-02-03 17:31:42 +0000

Wpadłem na to ostatnio w Excelu 2007 i skończyło się na użyciu funkcji ‘TRUNC’ w komórkach z wartościami:

value =TRUNC(B5,1)
      0 0
      5 5
    5.4 5.4
  65.43 65.4
765.432 765.4

Zadziałało dokładnie tak, jak chciałem…

2
2
2
2012-03-01 20:57:08 +0000

Pamiętaj, że w Reporting Services możesz również napisać wyrażenie dla formatowania liczb. W mojej sytuacji użyłem

iif(floor(Fields!numericFieldName.Value)=Fields!numericFieldName.Value,"0","0.##")

jako wyrażenia formatu liczbowego. W ten sposób powstał plik Excela z dwoma formatami komórek, wybieranymi na podstawie tego, czy wartość była liczbą całkowitą, czy nie.

1
1
1
2018-02-12 01:45:01 +0000

Moja odpowiedź usuwa przecinek dziesiętny AND Usuwa wartość 0

w formatowaniu warunkowym zapisu:

General;#;;@

To powinno załatwić sprawę.

1
1
1
2013-12-04 16:57:19 +0000

Nie musi to być aż tak skomplikowane - można to zrobić wyłącznie za pomocą Formatowania warunkowego. Mam Excela 2010, więc może to nie działać dla wcześniejszych wersji.

  1. Sformatuj komórki tak, aby były Ogólne. Liczba miejsc po przecinku dla niektórych liczb może być bardzo duża.
  2. Podświetl komórkę i kliknij Formatowanie warunkowe. Kliknij Nowa reguła, a następnie “Użyj formuły”.
  3. Użyj formuły =(B1-INT(B1))>0 (gdzie B1 to komórka, którą formatujesz)
  4. Kliknij przycisk Format i wybierz opcję Niestandardowy. W polu Typ wpisz [=0]0;.##.
  5. Naciśnij kilkakrotnie Enter.
  6. Kliknij ponownie na Formatowanie warunkowe, kliknij Zarządzaj regułami i edytuj utworzoną przed chwilą regułę. Zmień zakres w polu “Stosuje się do”, aby objąć zakres, który chcesz objąć.

Wszystko gotowe.

0
0
0
2014-01-17 17:34:13 +0000

Wydaje się, że jest to najprostszy sposób na wyświetlanie wartości dziesiętnej w przypadku liczb ułamkowych - i brak wartości dziesiętnej dla liczb całkowitych:

=TEXT(ROUND(Base_Number,Max_Decimal_Places),"general")

lub z odwołaniami do komórek:

=TEXT(ROUND(A1,2),"general")

Daje

15 = 15 9.23432234 = 9.23

0
0
0
2013-06-04 11:16:43 +0000
B1=IF(ROUND(A1,2)=INT(A1),TEXT(A1,"0"),TEXT(A1,"0.##"))
C1=IF(ROUND(B1,2)=INT(B1),TEXT(B1,"0"),TEXT(B1,"0.##"))

Koniec z osieroconymi kropkami dziesiętnymi.