Что делает формула ТЕКСТ, отформатированная как «?»?

Что делает формула ТЕКСТ, отформатированная как «?»?

Что на самом деле делает форматирование текста как "?"? Все, что я знаю, это то, что оно создаст вид пустой ячейки, если оценочное значение равно 0.

=TEXT(IF(condition,1,0),"?")

решение1

Помимо использования для дробей, он используется для того, чтобы оставить место для незначащих нулей слева и справа от десятичной точки. Это полезно, если вы используете фиксированный шрифт и хотите выровнять десятичные знаки, но не показывать нули, как в формате0000.0000

Например, если ячейки ниже отформатированы как ????.????и Courier Newдля шрифта , обратите внимание, как выровнены десятичные знаки, но начальные и конечные нули не отображаются.

введите описание изображения здесь

решение2

Очень интересный вопрос. Я провел некоторые испытания и проверил, что это представляет, поэтому я могу ответить на этот вопрос, what does it doоднако я не могу ответить наверняка на эту why does it existчасть.

Взгляните на мой пример данных:

введите описание изображения здесь

Обе строки B и C, по-видимому, совпадают, что показывает, что:

=TEXT(value,"?")эквивалентно=(IF(ROUND(value,0)=0," ",ROUND(value,0))

Имейте в виду, хотя это может быть очевидно, что TEXT() всегда преобразует данные в текст, а не в числовые.

Я предполагаю, что он существует для =TEXT(value,"?/?")опции форматирования. В этой опции вы хотите отображать дробь только если результат не пустой. Если какой-либо из вопросительных знаков пустой, то возвращается пробел.

решение3

Для того, чтобы понять, зачем, рассмотрим, что означает "?". Он означает именно то, что говорит Рон Розенфельд:

1) Разрешить сохранять пробел между символами независимо от вывода. Поэтому наиболее распространенное использование — «создание десятичной табуляции», аналогичной «реальной» в Word, чтобы все ваши записи выстраивались по своим десятичным знакам и отображали столько знаков после запятой, сколько вам нужно.

2) Поскольку общее желание при выполнении 1) наиболее распространенное использование — не допускать заполнения отображаемого значения нулями. (В противном случае вы бы использовали, для примера, «.0000» для десятичной точки и материала справа от нее (и все, что угодно для недесятичных цифр).) Поэтому вторичной функцией является подавление любых конечных нулей.

Если сделать справа от десятичной точки, результат будет точно таким, как показывает Рон Розенфельд. ​​Но что, если вы поместите один слева от десятичной точки? Зависит от деталей, и один интересный случай, поучительный здесь, это "?" с вводом в TEXT(), скажем, 12.95:

=TEXT( 12.95, "?" )

что дает "13", не больше и не меньше. Он не может ничего показать справа от десятичной точки, поскольку в формате нет ничего, касающегося десятичной точки или чего-либо справа от нее. Поэтому TEXT() должен округлить результат до того, что округляется до 0 десятичных знаков, точно так, как показывает Эрик Ф.

Теперь рассмотрим вариант, когда можно сделать то же самое и получить значение, округляющееся до 0:

=TEXT( 0.49, "?" )

Происходит следующее: TEXT() приходится округлять его до 1 знака слева от десятичной точки: ничего справа от него, и это 0. Формат подавляет незначащие (завершающие в конце результата) нули. Поскольку эта строка ("0") "имеет ноль в конце" (и в начале и в середине, здесь можно стать довольно метафизичным), этот ноль подавляется. Поскольку это ЕДИНСТВЕННОЕ, что присутствует, и его отображение подавляется, у вас остается "". Просто пробел.

Кстати, я пару раз сказал "отображает", но он не просто отображает его как таковой, он делает его именно таковым. Так что "13" сверху - это действительно 13, а не замаскированное 12,95.

Связанный контент