Як я можу відформатувати байт комірки в Excel як KB, MB, GB тощо?


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 "MB"; # ## 0 "GB"
Граствейт

1
Вибачте, але цей код помилковий! Поділивши на "5" або 500000, значення перетвориться на зовсім інше. Я використав значення "569692", і цей код дав мені "1 МБ"
Alper t. Туркер

53

Ось той, який я використовував: -

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

Здається, працює нормально.


2
не ідеальний (кратні 1000 проти 1024), але достатньо хороший і підтриманий. Дякую!
Skwerl

2
Кевін: кБ / МБ / ГБ насправді є правильним, кратним лише 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 and 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

Зазначений вище підхід до форматування працює, але лише для трьох рівнів. Вище використовувані KB, MB та GB. Тут я розширив його до шести. Клацніть правою кнопкою миші клітинку (клітинки) та виберіть Форматувати клітинки. На вкладці Число виберіть Власні. Потім у полі Тип: введіть наступне:

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

Потім виберіть OK. Це охоплює B, KB та MB. Потім, вибравши ті самі клітинки, клацніть стрічку Головна, умовне форматування, нове правило. Виберіть Форматувати лише комірки, що містять. Потім нижче в описі правила відформатуйте лише клітинки, значення комірки більше або дорівнює 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 тощо.


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""")))))))))))

3

І ще одним рішенням є використання інженерних позначень. (Це як у наукових позначеннях, окрім того, що показник експоненти завжди кратний 3.) Клацніть правою кнопкою миші клітинку (клітинки) та виберіть Форматувати клітинки. На вкладці Число виберіть Власний. Потім у полі Тип: введіть наступне:

##0.00E+00

Потім натисніть OK. Замість 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

1

Менше, ніж Tera, буде писати на ГБ, а більше 999 ГБ на ТБ

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

АБО

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


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")))))

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


Привіт, ласкаво просимо до 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""")))))))))))

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.

    = ПЕРЕКЛЮЧАТЕЛЬ (B1, 5, "PB", 4, "TB", 3, "GB", 2, "MB", 1, "KB", 0, "B")

  4. Сховати клітинку В1.

скріншот

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.