Формат научной нотации в Excel - PullRequest
0 голосов
/ 29 ноября 2018

Можно ли отформатировать числа в научной нотации как экспоненты с основанием 10, а не E в Excel?Например, Excel преобразует 0,00123 в 1,23E3, но я бы хотел формат 1.23x10^3

1 Ответ

0 голосов
/ 29 ноября 2018

Это невозможно при использовании стандартного форматирования чисел в Excel.

Конечно, вы можете преобразовать свой номер в текстовую строку с помощью =TEXT(A1;"0.00E+00"), а затем вы можете преобразовать эту текстовую строку в новую текстовую строку в нужном вам формате.С верхними индексами становится немного сложнее, так как их нужно отображать с помощью функции UNICHAR (эта функция доступна с Excel 2013).

Значения Unicode для использования с этой функцией следующие (изверхний индекс от 0 до 9): 8304,185,178,179,8308,8309,8310,8311,8312,8313

Таким образом, верхний индекс 50 будет =UNICHAR(8309)&UNICHAR(8304)

Вы можете создать в другом месте в своей книге именованный диапазон с этими значениями, поэтому преобразование будет легко сINDEX.На самом деле, я бы создал два диапазона, один для первой цифры показателя степени (где у вас нет 0, а есть пустая строка, поскольку вы не хотите отображать 10 ^ 03, но 10 ^ 3), ивторой для второй цифры показателя степени (где вы держите 0).

Подводя итог:

  • Преобразовать число в строку текста с помощью =TEXT(A1;"0.00E+00")
  • Заменить "E" на "x"
  • Замените «+» на «10»
  • Если число отрицательное, добавьте -
  • Замените два последних символа соответствующим верхним индексом (преобразуйте обратно в число с помощью NUMBERVALUE() изатем используйте INDEX(), чтобы получить значение Unicode для подачи в функцию UNICHAR.

Итак, для последней цифры формула (именованный диапазон значений Unicode - EXPO1 и EXPO2 вв моем случае):
=UNICHAR(INDEX(EXPO2;1;NUMBERVALUE(RIGHT(A1;1))+1))
Для первой цифры показателя степени (т. е. одного, но последнего символа текстовой строки) используйте эту формулу для преобразования в верхний индекс:
=UNICHAR(INDEX(EXPO1;1;NUMBERVALUE(LEFT(RIGHT(A1;2);1)+1)))

Я немного ленивый, я мог бы использовать MID вместо комбинации LEFT/RIGHT. И обратите внимание, что именованный диапазон теперь EXPO1, где первое значение - это значение Unicode пустой строки (8203).

Вся формула:
=LEFT(TEXT(A1;"0.00E+00");4)& "x10"& UNICHAR(INDEX(EXPO1;1;NUMBERVALUE(LEFT(RIGHT(TEXT(A1;"0.00E+00");2);1)+1)))& UNICHAR(INDEX(EXPO2;1;NUMBERVALUE(RIGHT(TEXT(A1;"0.00E+00");1))+1))

с EXPO1 иd EXPO2 именованные диапазоны, как описано выше.

Чтобы сделать формулу полностью самодостаточной, вы можете жестко закодировать их в формулу, тогда это будет выглядеть так:
=LEFT(TEXT(A1;"0.00E+00");4)& "x10"& UNICHAR(INDEX({8203,185,178,179,8308,8309,8310,8311,8312,8313};1;NUMBERVALUE(LEFT(RIGHT(TEXT(A1;"0.00E+00");2);1)+1)))& UNICHAR(INDEX({8304,185,178,179,8308,8309,8310,8311,8312,8313};1;NUMBERVALUE(RIGHT(TEXT(A1;"0.00E+00");1))+1))

Наконец, обратите внимание, что формула зависит откак вы конвертируете число в текст.На первый вопрос ОП я использовал точность до 2 цифр после запятой ("0.00E+00").Если вы хотите отобразить больше, вам нужно извлечь более 4 символов с первой формулой LEFT в моем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...