Как отформатировать ячейку в байтах в Excel как КБ, МБ, ГБ и т. Д.?

86

У меня есть значение в ячейке в байтах. Но никто не может прочитать 728398112238. Я бы сказал 678,37 ГБ

Написать формулу для ее форматирования относительно легко (вот одна: http://www.yonahruss.com/2007/02/format-excel-numbers-as-gb-mb-kb-b.html )

Но есть ли способ сделать это как «формат»? Я бы хотел, чтобы в ячейке было большое число, но чтобы оно отображалось в удобочитаемом формате.

Рик Мишам
источник
3
Обратите внимание, если вас вообще интересуют такие вещи: «kB» является стандартным («k» в нижнем регистре, а не в верхнем). Источники: en.wikipedia.org/wiki/Kilobyte en.wikipedia.org/wiki/Kilo - Если вам не интересно, проигнорируйте мой пост :)
PonyEars
Ссылка в этом посте мертва. Вот еще одна ссылка на решение, использующее формулу: social.technet.microsoft.com/Forums/en-US/…
Joost,

Ответы:

98

Вы не можете выполнять вычисления в функциях форматирования Excel. Вы можете использовать что-то вроде следующего, чтобы сделать приблизительную оценку:

[<500000]#,##0" B";[<500000000]#,##0,," MB";#,##0,,," GB"
землеройник
источник
1
Вау ... вы подтвердили мое подозрение, что я не умею делать вычисления ... но ваше решение гениальное! Я использую это или что-то близкое к этому. Благодарность!
RickMeasham,
6
Для региональных настроек с символом "" в качестве разделителя тысяч и "," в качестве разделителя-запятой: [<500000] # ## 0 "B"; [<500000000] # ## 0 "МБ"; # ## 0 "ГБ"
Grastveit
1
Извините, но это неверный код! Деление на «5» или 500000 преобразует значение в совершенно другое. Я использовал значение «569692», и этот код дал мне «1 МБ»
Alper t. Turker
53

Вот тот, который я использовал: -

[<1000000]0.00," KB";[<1000000000]0.00,," MB";0.00,,," GB"

Вроде нормально работает.

Дэвид Торнли
источник
2
не идеальный (кратный 1000 против 1024), но достаточно хороший и получил одобрение. Благодарность!
Skwerl
2
Кевин: kB / MB / GB действительно правильно с кратным только 1000 (как определено SI, используется Mac и жесткими дисками). Я думаю, это не меняет того, что вы хотите 1024 (более правильно написано KiB / MiB / GiB, как используется в графических интерфейсах Linux), поэтому просто укажу, что Windows поддерживает эту историческую и запутанную нотацию. Двоичная нотация была стандартизирована в прошлом веке, так что пора им заняться с программой. ;-)
Люк Ашервуд
1
Или, если вам нужны байты, КБ и МБ вместо КБ, МБ, ГБ:[<1000]#" B";[<1000000]0.00," KB";0.00,," MB"
Аарон Кэмпбелл,
12

Хотя условия формата Excel будут отображать только 1 из 3 условий, связанных с размером числа (они кодируют его как «положительный; отрицательный; ноль; текст», но я предпочитаю видеть это как: if isnumber и true; elseif isnumber и false; elseif number; elseif это текст )

так что для меня лучший ответ - это комментарий Дэвида, а также Граствейт о другом региональном формате.

Вот те, которые я использую в зависимости от отчетов, которые я составляю.

[<1000000]#,##0.00," KB";[<1000000000]#,##0.00,," MB";#,##0.00,,," GB"

[>999999999999]#,##0.00,,,," TB";[>999999999]#,##0.00,,," GB";#.##0.00,," MB"

[<1000000]# ##0,00 " KB";[<1000000000]# ##0,00  " MB";# ##0,00   " GB"

[>999999999999]# ##0,00    " TB";[>999999999]# ##0,00   " GB";# ##0,00  " MB"

Выбирайте!

Себастьян Симард
источник
12

Приведенный выше подход к форматированию работает, но только для трех уровней. Выше были использованы КБ, МБ и ГБ. Здесь я расширил его до шести. Щелкните правой кнопкой мыши ячейку (я) и выберите «Форматировать ячейки». На вкладке Number выберите Custom. Затем в поле Тип: введите следующее:

[<1000]##0.00"  B";[<1000000]##0.00," KB";##0.00,," MB"

Затем выберите ОК. Это касается B, КБ и МБ. Затем, с теми же выделенными ячейками, щелкните Главная лента, Условное форматирование, Новое правило. Выберите Форматировать только те ячейки, которые содержат. Затем ниже в описании правила Форматируйте только ячейки с помощью, Значение ячейки, больше или равно, 1000000000 (это 9 нулей). Затем нажмите Формат, вкладка Число, Пользовательский и в поле Тип: введите следующее:

[<1000000000000]##0.00,,," GB";[<1000000000000000]##0.00,,,," TB";#,##0.00,,,,," PB"

Выберите ОК и ОК. Это условное форматирование вступит в силу только в том случае, если значение больше 1 000 000 000. И он позаботится о диапазонах GB, TB и PB.

567.00  B
  5.67 KB
 56.70 KB
567.00 KB
  5.67 MB
 56.70 MB
567.00 MB
  5.67 GB
 56.70 GB
567.00 GB
  5.67 TB
 56.70 TB
567.00 TB
  5.67 PB
 56.70 PB

Все, что больше PB, будет отображаться как большее PB, например 56 700 PB. Вы можете добавить еще одно условное форматирование для обработки еще больших значений, EB и так далее.

Yrag00
источник
1
Небольшое замечание: если в installatoin у вас есть локаль, которая предписывает другие разделители, замените разделители в приведенных выше строках на правильные. На моем языке, а. поменяны местами, поэтому мне пришлось использовать: [<1000] ## 0,00 "B"; [<1000000] ## 0,00. "KB"; ## 0,00 .. "MB" и [<1000000000000] ## 0,00 ... "GB"; [<1000000000000000] ## 0,00 .... "TB"; #. ## 0,00 ..... "PB"
user1708042
10

Небольшое изменение, чтобы заставить его работать в моем регионе, Европе (. Как разделитель тысяч, запятая как десятичный разделитель):

[<1000000]#.##0,00" KB";[<1000000000]#.##0,00.." MB";#.##0,00..." GB"

Все еще та же проблема с преобразованием данных (1000! = 1024), но она выполняет свою работу за меня.

Бруно
источник
4

Я не знаю, как заставить его показывать двоичные гигабайты (кратные 1024 * 1024 * 1024), но вы можете сделать так, чтобы он показывал вам десятичные гигабайты, используя такой формат:

0.00,,,"Gb"
Андру Лувиси
источник
2
Обратите внимание, что b - бит, а B - байт. Бит составляет 1/8 байта, поэтому, чтобы избежать путаницы, всегда используйте правильную букву. То же самое касается префиксов, таких как M для мега (1000000 ×) и m для милли (1/1000).
Liggliluff
Мне нравится простота. Даже если оно не кратно 1024, этот ответ полезен.
Satoc
3

В приведенной выше формуле требуется знак минус в первой строке: "= IF (A1 <-999500000000"

=IF(A1<-999500000000,TEXT(A1,"#,##.#0,,,"" TB"""),
IF(A1<-9995000000,TEXT(A1,"#,##.#0,,,"" GB"""),
IF(A1<-9995000,TEXT(A1,"#,##0,,"" MB"""),
IF(A1<-9995,TEXT(A1,"#,##0,"" KB"""),
IF(A1<-1000,TEXT(A1,"#,##0"" B """),
IF(A1<0,TEXT(A1,"#,##0"" B """),
IF(A1<1000,TEXT(A1,"#,##0"" B """),
IF(A1<999500,TEXT(A1,"#,##0,"" KB"""),
IF(A1<999500000,TEXT(A1,"#,##0,,"" MB"""),
IF(A1<999500000000,TEXT(A1,"#,##.#0,,,"" GB"""),
TEXT(A1,"#,##.#0,,,,"" TB""")))))))))))
Swhgraham
источник
3

И еще одно решение - использовать инженерные обозначения. (Это похоже на научную нотацию, за исключением того, что показатель степени всегда кратен 3.) Щелкните правой кнопкой мыши ячейку (я) и выберите «Формат ячеек». На вкладке Number выберите Custom. Затем в поле Тип: введите следующее:

##0.00E+00

Затем нажмите ОК. Вместо K, M и т. Д. У вас будет +3, +6 и т. Д. Это будет работать для положительных и отрицательных чисел, а также для положительных и отрицательных показателей, -3 - m, -6 - u и т. Д.

567.00E-06
  5.67E-03
 56.70E-03
567.00E-03
  5.67E+00
 56.70E+00
567.00E+00
  5.67E+03
 56.70E+03
567.00E+03
  5.67E+06
Yrag00
источник
1

Менее Тера будет записывать на ГБ и более 999 ГБ записывать на ТБ

[<1000] 0 «ГБ»; [> 999] 0,0, «ТБ»

ИЛИ

[<1000] 0 «ГБ»; [> = 1000] 0,0, «ТБ»

Mored1984
источник
1

Я использую CDH hadoop, и когда я экспортирую отчет в Excel, у меня возникают две проблемы;

1) преобразовать дату Linux в дату Excel.
Для этого добавьте пустой столбец рядом с столбцом даты, скажем, верхняя строка - это B4, вставьте формулу ниже и перетащите ЧЕРНЫЙ "+" до последнего дня в конце столбец. Затем скройте исходный столбец

=(((B4/1000/60)/60)/24)+DATE(1970|1|1)+(-5/24)

2) Преобразование размера диска из байтов в ТБ, ГБ и МБ,
лучшая формула для этого - это

[>999999999999]# ##0.000,,,," TB";[>999999999]# ##0.000,,," GB";# ##0.000,," MB"

он предоставит вам значения с 3 десятичными знаками, просто отформатируйте ячейки -> Пользовательский и вставьте туда приведенный выше код

Альпер т. Тюркер
источник
1

Это что-то вроде "грубой силы", но работает;)

=IF(E4/1000<1;CONCATENATE(E4;" bps");IF(E4/1000<1000;CONCATENATE(ROUND(E4/1000;2);" kbps");IF(E4/1000000<1000;CONCATENATE(ROUND(E4/1000000;2);" mbps");IF(E4/1000000000<1000;CONCATENATE(ROUND(E4/1000000000;2);" gbps")))))

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

Saulo MB - PINPOINT
источник
Привет, добро пожаловать в Stack Overflow. Отвечая на вопрос, на который уже есть много ответов, не забудьте добавить дополнительную информацию о том, почему ответ, который вы предоставляете, является существенным, а не просто повторением того, что уже было проверено исходным плакатом. Это особенно важно в ответах «только код», таких как тот, который вы предоставили.
chb
1

Вставьте это рядом со своими значениями (байтами), и это автоматически изменит его на любой размер вашего значения.

=IF(G10>=1099511627776,CONCATENATE(ROUND((G10/1024/1024/1024/1024),1)," TB"),IF(G10>=1073741824,CONCATENATE(ROUND((G10/1024/1024/1024),1)," GB"),IF(G10>=1048576,CONCATENATE(ROUND((G10/1024/1024),1)," MB"),IF(G10>=1024,CONCATENATE(ROUND((G10/1024),1)," KB"),IF(G10>=1,CONCATENATE((G10)," BYTES"),0)))))

Фарук Жрф
источник
1

Все ответы здесь предоставляют значения с степенями 10. Вот формат с использованием правильных единиц СИ (кратных 1024, т. Е. Мебибайт, Гибибайт и Тебибайт):

[>1099511627776]#.##,,,," TiB";[>1073741824]#.##,,," GiB";0.##,," MiB"

Это поддерживает отображение двух десятичных знаков в MiB, GiB и TiB.

кап
источник
0

Увидев здесь ответы, мы улучшили эту формулу, чтобы иметь десятичные разряды на больших значениях и учитывать отрицательные значения.

=IF(A1<999500000000,TEXT(A1,"#,##.#0,,,"" TB"""),
IF(A1<-9995000000,TEXT(A1,"#,##.#0,,,"" GB"""),
IF(A1<-9995000,TEXT(A1,"#,##0,,"" MB"""),
IF(A1<-9995,TEXT(A1,"#,##0,"" KB"""),
IF(A1<-1000,TEXT(A1,"#,##0"" B """),
IF(A1<0,TEXT(A1,"#,##0"" B """),
IF(A1<1000,TEXT(A1,"#,##0"" B """),
IF(A1<999500,TEXT(A1,"#,##0,"" KB"""),
IF(A1<999500000,TEXT(A1,"#,##0,,"" MB"""),
IF(A1<999500000000,TEXT(A1,"#,##.#0,,,"" GB"""),
TEXT(A1,"#,##.#0,,,,"" TB""")))))))))))
Стек Overflower
источник
1
Исходный вопрос содержал подробности использования формулы. Но речь идет об использовании числового формата. Ваше решение очень похоже на связанное, за исключением того, что вы имеете дело с отрицательными числами. Вместо того, чтобы включать их в отдельные операторы IF, используйте ABS () для получения абсолютного значения.
RickMeasham
0

Я подозреваю, что многие ответы здесь устарели, так как я не получил ожидаемого результата от данного ответа.

Если у вас есть значение в КБ, которое вы хотели бы отформатировать в соответствии с размером, вы можете попробовать следующее.


Формула

[<1000]#" KB ";[<1000000]#0,00 " MB";0,## " GB"


Начальное значение (в КБ) => Вывод

952 => 952 KB

1514 => 1.51 MB

5122323 => 5.12 GB

Иван Скодье
источник
0

Для точного результата лучше посчитать, но с использованием формата отображения.

Предполагая, что ячейка A1 имеет значение 29773945664927.

  1. Подсчитайте количество запятых в ячейке B1.

    = ЧИСЛО (LEN (A1) -1,3)

  2. Разделите значение на 1024 ^ B1 в ячейке C1.

    = A1 / 1024 ^ B1

  3. Единица отображения в ячейке D1.

    = SWITCH (B1; 5; PB; 4; TB; 3; GB; 2; MB; 1; KB; 0; B)

  4. Скрыть ячейку B1.

снимок экрана

буксир
источник