Отформатируйте число с дополнительными десятичными знаками в 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 Это помогло мне решить конкретную проблему необходимости отображать значения в тысячах долларов (например, отображать 40000 долларов как 40 тысяч долларов и 10500 долларов как 10,5 тысяч долларов) в метках сводной таблицы (где условное форматирование не является опция). Формат кода $General\kсделал это отлично!
Дэн Хендерсон,
17

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

Например, А1 является целевой ячейкой.

  1. Отформатируйте A1 как "###, ###. 00". Это будет использоваться для десятичного числа.
  2. Определите условное форматирование для недесятичных чисел.

    • Условие: значение ячейки равно = TRUNC (A1).
    • Формат: ###,###

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

12       =>  12
14.231   => 14.23
15.00000 => 15
17.3     => 17.30
slhck
источник
Только что возникла проблема с номером 4.001, который округлился до 4.00 на дисплее, но не соответствовал формуле условного форматирования (4.001 <> 4) и все равно будет отображаться как «4.». Я использовал эту условную формулу для ее решения: = ROUND ($ 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

Работало именно так, как я хотел ...

Droj
источник
3
Да, и TRUNC (x, 2), и ROUND (x, 2) выполнят эту работу (в зависимости от того, какой метод округления вы используете). Затем вам просто нужно установить форматирование ячейки на «Общие», и десятичные разряды будут отображаться только при необходимости. (Я голосую, чтобы отметить пост Дроя как ответ.)
Саймон Ист
5

Вот один метод, использующий условное форматирование.

  1. Щелкните правой кнопкой мыши по ячейке, выберите «Формат ячейки»
  2. Выберите «Custom»
  3. Введите «0. ####» (добавьте больше или меньше #, чтобы контролировать максимальное количество знаков после запятой)
  4. Нажмите ОК
  5. Если ячейка все еще выбрана, используйте «Условное форматирование» (это может быть пункт меню в «Формате» или кнопка в «Домашнем» в зависимости от версии Excel)
  6. Добавить новое правило на основе формулы "= MOD (H32,1) = 0"

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

    Замените H32 в формуле идентификатором вашей ячейки, но УБЕДИТЕСЬ, ЧТО ЗНАКОВ НЕТ! (Без знаков $ вы можете скопировать формат в другие ячейки)

  7. Для формата этого правила выберите вкладку номера, выберите «Пользовательский»

  8. На этот раз введите формулу "0"
  9. Нажмите OK достаточно раз, чтобы вернуться к листу (зависит от версии Excel)

Ну вот, наслаждайтесь ответственно! Если вы хотите скопировать формат в другие ячейки, помните, что вы можете скопировать ячейку и использовать «Специальная вставка» с опцией «Формат».

Джон
источник
Не могли бы вы уточнить, относится ли это только к определенным (или более поздним версиям) Excel? Я все еще использую 2003 (и я подозреваю, что смущающее число других также), и когда я перехожу к условному форматированию, у меня нет возможности изменить форматирование чисел, только Font, Border и Patterns. Спасибо
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;#;;@

Это должно сделать свое дело.

Mr.J
источник
Это показывает нули как пустые ячейки.
lolmaus - Андрей Михайлов
0

В дополнение к замечательному ответу Люка, приведенному выше, есть вариант, основанный на его работе. Я не хотел иметь ноль в ячейке, если не было значения. Оставьте свой формат ячейки как общий и используйте эту формулу:

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

Снова, где A1 - ячейка, на которую ссылаются.


источник
0

Использование Roundфункции для предоставления значимых цифр. Это не меняет количество отображаемых десятичных знаков. Просто отформатируйте ячейку с generalчисловым форматом.

ROUND(MyValue,Sig.figs - 1 - INT(LOG10(ABS(MyValue)))
Шива Чаран
источник
Почему вся сложная формула INT (LOG ...? Почему бы не просто ROUND (значение, 2) и отформатировать как General?
Саймон Ист
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.##"))

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

user228931
источник
0

Похоже, что это самый простой способ отображения десятичной дроби при наличии дробных чисел, а для целых чисел - без десятичной дроби:

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

или со ссылками на ячейки:

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

дает

15 = 15
9,23432234 = 9,23

lookingforsame
источник
Добро пожаловать в SuperUser @lookingforsame. Просто обратите внимание на скрытые детали вопросов, хотя. В этом случае оператор говорит, что вывод из SQL, если макросы не возможны, формулы могут быть также. Иногда стоит ответить на вопрос в качестве комментария, прежде чем отвечать. Приятно видеть нового человека, с удовольствием отвечу!
Джулиан Найт