Memformat angka dengan tempat desimal opsional di Excel

76

Saya memiliki angka dalam sel di Excel. Saya ingin angka-angka diformat sehingga jika mereka memiliki tempat desimal, mereka menunjukkan maksimum dua, dan jika mereka tidak memiliki tempat desimal itu tidak menunjukkan apa pun.

Sebagai contoh.

  • 15 harus diformat sebagai 15, BUKAN 15.00
  • 14.3453453 harus diformat sebagai 14.35
  • 12.1 harus diformat sebagai 12.1
  • 0 harus diformat sebagai 0

Kode format khusus terdekat yang saya buat adalah 0.##. Sayangnya format ini 15.00sebagai 15. (perhatikan titik desimal ekstra).

Untuk lebih memperumit masalah, spreadsheet adalah hasil ekspor dari Layanan Pelaporan SQL Server. Jadi tidak ada makro yang mungkin. Oh well, sepertinya 0.##ini taruhan terbaik saya, dan mereka hanya bisa hidup dengan periode tambahan.

sinar
sumber

Jawaban:

29

Atau, Anda dapat memecahkan masalah titik desimal "opsional" menggunakan solusi berikut:

Format angka: General;[Red](General)

Ini akan menambah tempat desimal dan nilai fraksional sesuai, sementara memformat angka negatif dengan cara yang lebih mudah dibaca.

Sedangkan untuk pertanyaan asli poster, Anda masih perlu membulatkan / memotong titik desimal "ekstra" menggunakan rumus. Namun, ini adalah formula sederhana =ROUND(<value>,<desired decimal places>)yang tidak terlalu mahal secara komputasi.

Contoh:

2500 -> 2500
0.25 -> 0.25
-2500 -> (2500)
-0.25 -> (0.25)
Ross
sumber
3
Jawaban ini layak mendapat lebih banyak upvotes. Ini menangani titik desimal dengan benar tanpa menggunakan pemformatan bersyarat. Dalam kasus khusus saya, saya ingin menampilkan semua tempat desimal, jadi saya bahkan tidak perlu mengubah rumus.
wilson
1
Generalmemiliki masalah masuk ke notasi ilmiah jika angka tersebut memiliki terlalu banyak desimal, misalnya 2.6532E-06bukan 0.0000026532.
Dan Dascalescu
+1 Ini sangat membantu saya dalam memecahkan masalah khusus yang diperlukan untuk menampilkan nilai ribuan dolar (mis. Tunjukkan $ 40.000 sebagai $ 40k, dan $ 10.500 sebagai $ 10.5k), dalam label Pivot Table (di mana pemformatan bersyarat bukan merupakan pilihan). Format kode $General\kmelakukannya dengan sempurna!
Dan Henderson
17

Terapkan Pemformatan Bersyarat untuk angka non-desimal.

Misalnya, A1 adalah sel target.

  1. Format A1 sebagai "###, ###. 00". Ini akan digunakan untuk angka desimal.
  2. Tetapkan Pemformatan Bersyarat untuk angka non-desimal.

    • Kondisi: Nilai Sel sama dengan = TRUNC (A1).
    • Format: ###,###

Di bawah ini hasilnya:

12       =>  12
14.231   => 14.23
15.00000 => 15
17.3     => 17.30
slhck
sumber
Baru saja mengalami masalah dengan angka 4.001, yang dibulatkan menjadi 4.00 pada layar, namun tidak akan memenuhi formula pemformatan bersyarat (4.001 <> 4) dan masih akan ditampilkan sebagai "4.". Saya menggunakan rumus kondisional ini untuk menyelesaikannya: = ROUND ($ A1; 2) = TRUNC ($ A1)
leokhorn
14

Format khusus Excel dapat memberikan jawaban parsial

Format khusus untuk angka di Excel dimasukkan dalam format ini:

  • format angka positif; format angka negatif; format nol; format teks

Satu format yang mendekati kebutuhan Anda, tetapi meninggalkan angka desimal untuk angka tanpa desimal adalah:

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

Contoh:

  • 15 ditampilkan sebagai 15.
  • 14.3453453 ditampilkan sebagai 14,35
  • 12.1 ditampilkan sebagai 12.1
  • 0 ditampilkan sebagai 0
Robert Mearns
sumber
Sejauh ini, inilah jawaban terbaik.
KyloRen
4
Namun sebenarnya tidak memberikan solusi yang valid, atau bahkan kemungkinan penyelesaian. Itu memang memiliki informasi yang berguna mengenai format angka kustom.
Lopsided
15 ditampilkan sebagai, 15.
Roger Far
6

Saya mengalami ini baru-baru ini di Excel 2007 dan akhirnya menggunakan fungsi 'TRUNC' dalam sel nilai:

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

Bekerja persis seperti yang saya inginkan ...

Droj
sumber
3
Ya, baik TRUNC (x, 2) dan ROUND (x, 2) akan melakukan pekerjaan itu (tergantung pada metode pembulatan seperti apa yang Anda kejar). Anda kemudian hanya perlu mengatur pemformatan sel ke "Umum" dan tempat desimal hanya akan ditampilkan jika diperlukan. (Saya memilih untuk menandai posting Droj sebagai jawabannya.)
Simon East
5

Berikut adalah salah satu metode menggunakan pemformatan bersyarat.

  1. Klik kanan sel Anda, pilih "Format Sel"
  2. Pilih "Kustom"
  3. Masukkan "0. ####" (tambahkan lebih banyak atau lebih sedikit untuk mengontrol jumlah maksimum tempat desimal)
  4. Klik OK
  5. Dengan sel masih dipilih, gunakan "Pemformatan Bersyarat" (mungkin item menu dalam Format atau tombol di Rumah tergantung pada versi Excel Anda)
  6. Tambahkan aturan baru, berdasarkan rumus "= MOD (H32,1) = 0"

    sunting - rumus yang lebih baik adalah "= MOD (ROUND (H32,2), 1) = 0" dengan '2' adalah jumlah tempat desimal yang diinginkan. rumus sebelumnya meninggalkan titik desimal tertinggal jika angka dibulatkan ke bilangan bulat.

    Ganti H32 dalam rumus dengan ID sel Anda, tetapi PASTIKAN TIDAK ADA TANDA $! (Tidak ada tanda $ memastikan bahwa Anda menyalin format ke sel lain)

  7. Untuk format aturan ini, pilih tab angka, pilih "Kustom"

  8. Kali ini, masukkan rumus "0"
  9. Klik OK cukup untuk kembali ke sheet (bervariasi di antara versi excel)

Ini dia, selamat menikmati! Jika Anda ingin menyalin format ke sel lain, ingatlah bahwa Anda dapat menyalin sel dan menggunakan "Tempel Spesial" dengan opsi "Format".

John
sumber
Bisakah Anda mengklarifikasi jika ini hanya berlaku untuk versi Excel tertentu (atau lebih baru)? Saya masih menggunakan 2003 (dan saya curiga ada sejumlah orang lain yang memalukan juga) dan ketika saya pergi ke pemformatan Bersyarat, saya tidak punya opsi untuk memodifikasi pemformatan angka, hanya Font, Perbatasan, dan Pola. Terima kasih
SSilk
Saya baru saja mencoba pendekatan ini di Excel 2010 dan berhasil dengan baik. Ini tidak akan bekerja dengan versi Excel yang lebih lama (setidaknya itulah yang saya katakan "mode kompatibilitas" di Excel 2010).
barfuin
2

Ingat bahwa di Layanan Pelaporan, Anda juga dapat menulis ekspresi untuk pemformatan angka. Dalam situasi saya, saya menggunakan

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

sebagai ekspresi format angka. Ini menghasilkan file Excel dengan dua format sel, dipilih oleh apakah nilainya bilangan bulat.

Joshua Seigler
sumber
1

Apakah Anda / pengguna Anda memasukkan nilai secara langsung ke dalam sel, atau apakah mereka diisi oleh rumus atau makro?

Jika sel tidak diisi secara langsung oleh manusia, Anda bisa menyimpan nilai yang dihitung dalam rentang tersembunyi dan kemudian menampilkan teks yang diformat ke pengguna dengan rumus seperti ini:

=IF(ROUND(A1,2)=INT(A1),TEXT(A1,"0"),TEXT(A1,"0.0#"))

(di mana 'A1' adalah sel yang dirujuk)

Rumus akan menampilkan nilai seperti ini:

 -------------------------
 |Original     |Formatted|
 |-------------+---------|
 |         15  |       15|
 | 14.3453453  |    14.35|
 |       12.1  |     12.1|
 |          0  |        0|
 |    -15.123  |   -15.12|
 |      1.004  |        1|
 -------------------------

NB: Output rumus adalah string teks, bukan numerik, jadi:

  • Output default menjadi rata kiri.
  • Anda tidak dapat menggunakan output dalam perhitungan lebih lanjut (sebagai gantinya, Anda harus menggunakan sel asli yang dirujuk)

sumber
1

Memformat sel sebagai 'Umum' kemudian di bawah validasi data, membatasi nilai ke desimal


sumber
Jika Anda perlu menghindari menambahkan formula (dan mungkin kolom baru) ke spreadsheet Anda, maka saran Fred mungkin yang terbaik.
Simon East
1
Ini tidak akan memungkinkan orang untuk memasukkan angka dengan lebih dari batas visual angka desimal.
barfuin
1

Ini tidak harus terlalu rumit - ini dapat dilakukan secara eksklusif dengan Pemformatan Bersyarat. Saya memiliki Excel 2010, jadi ini mungkin tidak berfungsi untuk versi sebelumnya.

  1. Memformat sel menjadi Umum. Jumlah tempat desimal untuk beberapa angka mungkin sangat tinggi.
  2. Sorot sel dan klik Pemformatan Bersyarat. Klik Aturan Baru, lalu "Gunakan Formula".
  3. Gunakan rumus = (B1-INT (B1))> 0 (di mana B1 adalah sel yang Anda format)
  4. Klik tombol Format dan pilih Kustom. Masukkan [= 0] 0;. ## ke dalam kolom Jenis.
  5. Tekan Enter beberapa kali.
  6. Klik Pemformatan Bersyarat lagi, klik Kelola Aturan, dan Edit aturan yang baru saja Anda buat. Ubah rentang dalam bidang "Berlaku untuk" untuk mencakup rentang yang ingin Anda cakup.

Semua selesai.

Wayne Hoff
sumber
1

Jawaban Saya menghilangkan titik desimal DAN Menghapus nilai 0

dalam penulisan pemformatan bersyarat:

General;#;;@

Ini harus melakukan trik.

Mr.J
sumber
Ini menampilkan nol sebagai sel kosong.
lolmaus - Andrey Mikhaylov
0

Lebih jauh dari jawaban hebat Luke di atas di sini adalah variasi berdasarkan karyanya. Saya tidak ingin memiliki nol di dalam sel jika tidak ada nilai. Biarkan format sel Anda sebagai umum dan gunakan rumus ini:

=IF((A1=""), "",IF(ROUND(A1,2)=INT(A1),TEXT(A1,"0"),TEXT(A1,"0.0#")))

Lagi-lagi di mana A1 adalah sel yang dirujuk.


sumber
0

Menggunakan Roundfungsi untuk memberikan angka signifikan. Namun ini tidak mengubah jumlah tempat desimal yang ditampilkan. Format saja sel dengan generalformat angka.

ROUND(MyValue,Sig.figs - 1 - INT(LOG10(ABS(MyValue)))
Siva Charan
sumber
Mengapa semua rumus INT (LOG ... yang rumit? Mengapa tidak hanya ROUND (nilai, 2) dan format sebagai Umum?
Simon East
0
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.##"))

Tidak ada lagi angka desimal anak yatim.

pengguna228931
sumber
0

Ini tampaknya menjadi cara paling sederhana untuk memiliki Desimal yang ditampilkan ketika ada bilangan pecahan - dan Tidak Ada Desimal ditampilkan untuk bilangan bulat:

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

atau dengan referensi sel:

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

Memberi

15 = 15
9.23432234 = 9.23

mencariforsame
sumber
Selamat datang di SuperUser @lookingforsame. Hanya sebuah catatan yang harus diperhatikan untuk detail pertanyaan yang tersembunyi. Dalam hal ini, op mengatakan output dari SQL, jika makro tidak memungkinkan, rumus mungkin juga tidak. Terkadang layak untuk memasukkan pertanyaan sebagai komentar sebelum menjawab. Senang bertemu orang baru, senang menjawab!
Julian Knight