У меня есть числа в ячейках в Excel. Я хочу числа, отформатированные так, чтобы, если у них есть десятичные разряды, они показали максимуму два, и если у них нет десятичных разрядов, он не показывает никому.
Например.
Самый близкий пользовательский код формата, который я придумал, 0.##
. К сожалению, это форматирует 15.00
как 15. (отметьте дополнительную десятичную точку).
Для дальнейшего усложнения проблемы электронная таблица является результатом экспорта от SQL Server Reporting Services. Так никакие макросы возможны. О, хорошо это похоже 0.##
мой лучший выбор, и они могут просто жить с дополнительным временем.
Примените Условное форматирование для недесятичных чисел.
Например, A1 является целевой ячейкой.
Определите Условное форматирование для недесятичных чисел.
###,###
Ниже результат:
12 => 12
14.231 => 14.23
15.00000 => 15
17.3 => 17.30
Excel пользовательские форматы может предоставить частичный ответ
Пользовательские форматы для чисел в Excel вводятся в этот формат:
Один формат, который близко подходит к Вашему требованию, но уезжает в десятичном разряде в числа без десятичных чисел:
Пример:
Вы / Ваши пользователи, вводящие значения непосредственно в ячейках, или они заполняют формулой или макросом?
Если ячейки не заполняются непосредственно человеком, Вы могли бы сохранить расчетные значения в скрытом диапазоне и затем отобразить форматированный текст пользователю с формулой как это:
=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: вывод формулы является текстовой строкой, не числовым, таким образом:
Ячейка формата как 'Общая' затем при подтверждении правильности данных ограничивает значения десятичными числами
В дополнение к большому ответу Luke выше вот изменение на основе его работы. Я не хотел иметь нуль в ячейке, если не было никакого значения. Оставьте свой формат ячеек как общий, и использовал эту формулу:
=IF((A1=""), "",IF(ROUND(A1,2)=INT(A1),TEXT(A1,"0"),TEXT(A1,"0.0#")))
Снова, где A1 является ссылаемой ячейкой.
Используя Round
функция для обеспечения значащих цифр. Это не изменяет количество отображенных десятичных разрядов как бы то ни было. Просто отформатируйте ячейку с general
числовой формат все же.
ROUND(MyValue,Sig.figs - 1 - INT(LOG10(ABS(MyValue)))