Відформатуйте число з необов'язковими десятковими знаками в Excel


76

Я маю числа в клітинках в Excel. Я хочу, щоб цифри були відформатовані так, що якщо у них є десяткові знаки, вони показують максимум два, а якщо у них немає десяткових знаків, вони не показують жодних.

Наприклад.

  • 15 слід форматувати як 15, а не 15.00
  • 14.3453453 має бути відформатовано як 14.35
  • 12.1 слід відформатувати як 12.1
  • 0 слід відформатувати як 0

Найближчий спеціальний код формату, який я придумав, - це 0.##. На жаль , це формати , 15.00як 15 (зверніть увагу на додаткову десяткову точку).

Для подальшого ускладнення проблеми електронна таблиця є результатом експорту з сервісів звітування SQL Server. Тож ніякі макроси неможливі. Ну добре, схоже, 0.##це моя найкраща ставка, і вони можуть просто прожити з додатковим періодом.

Відповіді:


29

Крім того, ви можете вирішити "необов'язкову" задачу з десятковою точкою, використовуючи таке рішення:

Формат номера: General;[Red](General)

Це додасть відповідно десятковий знак і дробове значення, форматуючи негативні числа більш розбірливим способом.

Що стосується оригінального питання афіші, то вам все одно потрібно округлювати / обрізати "зайві" десяткові крапки за допомогою формули. Однак це проста формула, =ROUND(<value>,<desired decimal places>)яка не є надзвичайно обчислювально дорогою.

Приклади:

2500 -> 2500
0.25 -> 0.25
-2500 -> (2500)
-0.25 -> (0.25)

3
Ця відповідь заслуговує на більшу кількість відгуків. Він обробляв десяткову точку правильно, не використовуючи умовного форматування. У моєму конкретному випадку я хочу показати всі десяткові знаки, тому мені навіть не потрібно змінювати формулу.
Вілсон

1
Generalє проблема перейти до наукових позначень, якщо кількість має занадто багато десяткових знаків, наприклад 2.6532E-06замість 0.0000026532.
Дан Даскалеску

+1 Це було корисно для мене у вирішенні конкретної проблеми щодо необхідності відображення значень у тисячі доларів (наприклад, показувати 40 000 доларів як 40 000 доларів та 10 500 доларів як 10,5 тисячі доларів) у мітках зведеної таблиці (де умовне форматування не є варіант). Код формату $General\kзробив це ідеально!
Ден Хендерсон

17

Застосувати умовне форматування для недесяткових чисел.

Наприклад, A1 - цільова клітина.

  1. Форматуйте A1 як "###, ###. 00". Це буде використовуватися для десяткового числа.
  2. Визначте умовне форматування для недесяткових чисел.

    • Умова: Значення комірки дорівнює = TRUNC (A1).
    • Формат: ###,###

Нижче наведено результат:

12       =>  12
14.231   => 14.23
15.00000 => 15
17.3     => 17.30

Просто виникла проблема з номером 4.001, яка округлена до 4.00 на дисплеї, але не задовольнила формулу формулювання умовного форматування (4.001 <> 4) і все одно відображатиметься як "4." Я використав цю умовну формулу, щоб вирішити її: = РОУНД ($ A1; 2) = TRUNC ($ A1)
leokhorn

14

Спеціальні формати Excel можуть дати часткову відповідь

Спеціальні формати для чисел у Excel вводяться у такому форматі:

  • позитивний формат чисел; формат негативного числа; нульовий формат; текстовий формат

Один формат, який наближається до вашої вимоги, але залишає у десятковому знаку для цифр без десяткових знаків:

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

Приклад:

  • 15 відображається як 15.
  • 14.3453453 відображається як 14.35
  • 12.1 відображається як 12.1
  • 0 відображається як 0

Це, безумовно, найкраща відповідь.
KyloRen

4
Однак насправді не є правильним рішенням або навіть можливим вирішенням проблеми. У ньому є корисна інформація щодо користувацьких форматів чисел.
Односторонній

15 відображається як, 15.
Роджер Фар

6

Нещодавно я зіткнувся з цим у Excel 2007 і щойно закінчив використання функції "TRUNC" у клітинках значення:

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

Працював саме так, як я цього хотів ...


3
Так, і TRUNC (x, 2), і ROUND (x, 2) виконають цю роботу (залежно від того, який метод округлення ви використовуєте). Тоді вам просто потрібно встановити формат комірок на "Загальне", і десяткові місця будуть відображатися лише за потреби. (Я голосую за те, щоб відзначити допис Дроя.)
Саймон Схід

5

Ось один метод використання умовного форматування.

  1. Клацніть правою кнопкою миші свою клітинку, виберіть "Форматування комірки"
  2. Виберіть "Спеціальний"
  3. Введіть "0. ####" (додайте більше або менше # для керування максимальною кількістю десяткових знаків)
  4. Натисніть кнопку ОК
  5. Якщо клітинка все ще вибрана, використовуйте "Умовне форматування" (це може бути пункт меню у "Формат" або кнопка "Головна" в залежності від версії Excel)
  6. Додайте нове правило, грунтуючись на формулі "= MOD (H32,1) = 0"

    редагувати - краще формула "= MOD (ROUND (H32,2), 1) = 0", а "2" - бажана кількість десяткових знаків. Попередня формула залишає десяткові знаки після знаку, якщо число округляє ціле число.

    Замініть H32 у формулі на ідентифікатор вашої комірки, але ЗАБЕЗПЕЧЕНО, ЩО НЕМАЄ $ ЗНАКИ! (Немає знаків $ гарантує копіювання формату в інші комірки)

  7. Для формату цього правила виберіть вкладку цифр, виберіть "Спеціальний"

  8. Цього разу введіть формулу "0"
  9. Натисніть кнопку ОК достатньо разів, щоб повернутися до аркуша (залежить від версій excel)

Там ви йдете, насолоджуйтесь відповідально! Якщо ви хочете скопіювати формат в інші комірки, пам’ятайте, що ви можете скопіювати комірку і скористатися «Спеціальним вставкою» за допомогою параметра «Формат».


Чи можете ви уточнити, чи стосується це лише певних (або останніх версій) Excel? Я все ще використовую 2003 рік (і підозрюю, що це також бентежить кількість інших), і коли я переходжу до умовного форматування, у мене немає можливості змінювати форматування чисел, лише шрифт, кордон та шаблони. Спасибі
SSilk

Я просто спробував такий підхід в Excel 2010, і він спрацював чудово. Він не працюватиме з більш ранніми версіями Excel (принаймні, про це мені говорить моя перевірка "Режим сумісності" в Excel 2010).
barfuin

2

Пам’ятайте, що в службах Reporting Services ви також можете написати вираз для форматування чисел. У своїй ситуації я звик

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

як вираз у форматі числа Це створило файл Excel з двома форматами комірок, обраний залежно від того, значення було цілим чи ні.


1

Ви / ваші користувачі вводите значення безпосередньо в клітинках чи вони заповнюються формулою чи макросом?

Якщо клітини не заповнюються безпосередньо людиною, ви можете зберігати обчислені значення у прихованому діапазоні, а потім відображати відформатований текст користувачеві у формі такої формули:

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

(де 'A1' - комірка, на яку посилається)

Формула відображатиме такі значення:

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

NB: Вихід формули - це текстовий рядок, а не числовий, так що:

  • Вибір за замовчуванням має вирівнювання ліворуч.
  • Ви не можете використовувати вихід у будь-яких подальших обчисленнях (натомість слід використовувати оригінальну комірку, на яку посилається)

1

Форматируйте комірку як "Загальне", тоді під час перевірки даних обмежуйте значення десяткові


Якщо вам потрібно уникати додавання формул (і, можливо, нового стовпця) до своєї таблиці, тоді пропозиція Фреда може бути найкращою.
Саймон Схід

1
Це не дозволить людям вводити цифри з більшою кількістю візуальних меж десяткових цифр.
barfuin

1

Це не повинно бути настільки складним - це можна зробити виключно за допомогою умовного форматування. У мене є Excel 2010, тому це може не працювати для більш ранніх версій.

  1. Відформатуйте комірки, щоб вони були загальними. Кількість десяткових знаків для деяких чисел може бути дуже високою.
  2. Виділіть клітинку та натисніть Умовне форматування. Клацніть Нове правило, а потім "Використовувати формулу".
  3. Використовуйте формулу = (B1-INT (B1))> 0 (де B1 - клітина, яку ви форматуєте)
  4. Клацніть кнопку Формат і виберіть Спеціальні. Введіть [= 0] 0;. ## у поле Тип.
  5. Натисніть Enter кілька разів.
  6. Клацніть ще раз на Умовне форматування, клацніть Керувати правилами та Відредагуйте створене вами правило. Змініть діапазон у полі "Застосовує до", щоб охопити діапазон, який потрібно охопити.

Все зроблено.


1

Мій відповідь видаляє десяткову точку І видаляє значення 0

в умовному форматуванні пишіть:

General;#;;@

Це повинно зробити трюк.


Це відображає нулі як порожні комірки.
lolmaus - Андрій Михайлов

0

Крім великої відповіді Луки, тут описано варіацію, засновану на його творчості. Я не хотів мати нуль у комірці, якщо не було значення. Залиште свій формат комірок як загальний і використовуйте цю формулу:

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

Знову де А1 - клітина, на яку посилається.


0

Використання Roundфункції для надання значущих цифр. Це не змінює кількість відображених знаків після коми. Просто відформатуйте комірок у generalформаті чисел.

ROUND(MyValue,Sig.figs - 1 - INT(LOG10(ABS(MyValue)))

Чому вся складна формула INT (ЛОГ ...? Чому б не просто КРАЙ (значення, 2) та форматування як Загальне?
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.##"))

Немає більше осиротілих десяткових знаків.


0

Здається, це найпростіший спосіб показувати десяткові числа, коли є дробові числа - а для цілих чисел не відображається жодних десятків:

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

або із посиланнями на клітинки:

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

Дає

15 = 15
9,23432234 = 9,23


Ласкаво просимо до SuperUser @lookingforsame. Лише записка, щоб слідкувати за прихованими деталями запитань. У цьому випадку оператор говорить, що вихід є з SQL, якщо макроси не можливі, формули можуть бути не будь-якими. Іноді варто поставити запитання як коментар, перш ніж відповісти. Приємно бачити нову людину, раді відповіді!
Юліанський лицар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.