Отформатируйте число с дополнительными десятичными разрядами в Excel

У меня есть числа в ячейках в Excel. Я хочу числа, отформатированные так, чтобы, если у них есть десятичные разряды, они показали максимуму два, и если у них нет десятичных разрядов, он не показывает никому.

Например.

  • 15 должен быть отформатирован как 15, НЕ 15.00
  • 14.3453453 должен быть отформатирован как 14,35
  • 12.1 должен быть отформатирован как 12,1
  • 0 должен быть отформатирован как 0

Самый близкий пользовательский код формата, который я придумал, 0.##. К сожалению, это форматирует 15.00 как 15. (отметьте дополнительную десятичную точку).

Для дальнейшего усложнения проблемы электронная таблица является результатом экспорта от SQL Server Reporting Services. Так никакие макросы возможны. О, хорошо это похоже 0.## мой лучший выбор, и они могут просто жить с дополнительным временем.

76
задан 30.01.2016, 19:50

7 ответов

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

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

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

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

Ниже результат:

12       =>  12
14.231   => 14.23
15.00000 => 15
17.3     => 17.30
17
ответ дан 07.12.2019, 08:08

Excel пользовательские форматы может предоставить частичный ответ

Пользовательские форматы для чисел в Excel вводятся в этот формат:

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

Один формат, который близко подходит к Вашему требованию, но уезжает в десятичном разряде в числа без десятичных чисел:

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

Пример:

  • 15 отображен как 15.
  • 14.3453453 отображен как 14,35
  • 12.1 отображен как 12,1
  • 0 отображен как 0
14
ответ дан 07.12.2019, 08:08

Я недавно столкнулся с этим в Excel 2007 и только что закончил тем, что использовал функцию 'TRUNC' в ячейках значения:

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

Работавший точно путь я хотел это к...

6
ответ дан 07.12.2019, 08:08

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

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

=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
ответ дан 07.12.2019, 08:08

Ячейка формата как 'Общая' затем при подтверждении правильности данных ограничивает значения десятичными числами

1
ответ дан 07.12.2019, 08:08

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

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

Снова, где A1 является ссылаемой ячейкой.

0
ответ дан 07.12.2019, 08:08

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

ROUND(MyValue,Sig.figs - 1 - INT(LOG10(ABS(MyValue)))
0
ответ дан 07.12.2019, 08:08

Теги

Похожие вопросы