Microsoft Excel: умовне форматування чисел


1

У форматі є стовпець з часовими періодами hh:mm:ss. Секунди не використовуються. Проміжок часу три години і дві хвилини буде 03:02:00. Як умовно відформатувати клітинки, щоб отримати такі результати?

00:00:000 minutes

00:01:001 minute

00:02:002 minutes

01:00:001 hour

02:00:002 hours

03:01:003 hours, 1 minute

01:03:001 hour, 3 minutes

Я безуспішно пробував рядки користувацького формату, такі як:

[<60]hh:mm:ss "minutes";[<120]hh:mm:ss "minute";[<3600]hh:mm:ss "minutes";hh "hour(s)," mm "minute(s)"


Відредагуйте заголовок, і він повинен бути "Форматування часу для відображення через годину та хвилини".
Раджеш S

1
Ні. Навіщо мені це робити?
Бен

Тому що це формат комірки або формат дати та часу. Умовний формат різний.
Rajesh S

1
Ну, це лише називання. Насправді це умовний формат чисел.
Бен

Відповіді:


1

Я не знаю, який "стандартний" формат дати / часу вбудований для гарного форматування таким чином, так що так, ваша спроба в користувацькому форматі здається доречною.

Однак причина, яка не працює для вас, полягає в тому, що значення часу не виражаються в секундах, як ви припускаєте - вони зберігаються в десятковому значенні, де 1 - 24 години.

Отже, ви повинні використовувати десяткові значення, еквівалентні бажаним точкам перерви. На жаль, здається, що Excel обмежує кількість точок перерви до трьох, тому я не можу отримати додаткові точки прориву на "1 хвилину" (сингулярно) тощо. Навіть якби було більше точок прориву, ви ніколи не могли б досягти "N годин", оскільки ви б потрібні нескінченні точки перерви (немає умови, яка б визначала нульову хвилину).

Тож найближче, що я можу отримати зі спеціальним форматом:

[<0.000694]"0 minutes";[<0.041666][m] "minutes";h "hours", m "minutes"

Що дає наступне:

00:00:00    0 minutes
00:01:00    1 minutes
00:02:00    2 minutes
00:03:00    3 minutes
01:00:00    1 hours, 0 minutes
01:01:00    1 hours, 1 minutes
02:00:00    2 hours, 0 minutes
02:01:00    2 hours, 1 minutes
01:03:00    1 hours, 3 minutes
23:59:59    23 hours, 59 minutes

Напевно, замість цього я б запропонував написати функцію VBA та відформатувати поле у ​​формулі.

Але також я б запропонував вам подумати, чи варто в першу чергу значення. Зберігання минулого періоду було б краще в певній одиниці (наприклад, хвилин у вашому випадку). Ви все ще не могли мати нескінченну точку перерви, але ви уникаєте очевидної проблеми з вищезазначеним - вона перекидається через 23 години 59 хвилин.

EDIT : Для розваги я склав формулу, яка дає бажані результати. Це не такий формат, як запитує ваше питання, а тому, що це точно не дало бажаного результату, я вважав, що це може бути хорошою альтернативою:

=if(hour(a1)=0,if(MINUTE(A1)=0,"0 minutes",if(minute(a1)=1,"1 minute",minute(a1) & " minutes")),if(hour(a1)=1,if(MINUTE(A1)=0,"1 hour",if(minute(a1)=1,"1 hour, 1 minute","1 hour, " & minute(a1) & " minutes")),if(MINUTE(A1)=0,hour(A1) & " hours",if(minute(a1)=1,hour(A1) & " hours, 1 minute",hour(A1) & " hours, " & minute(a1) & " minutes"))))

00:00:00    0 minutes
00:01:00    1 minute
00:02:00    2 minutes
00:03:00    3 minutes
01:00:00    1 hour
01:01:00    1 hour, 1 minute
02:00:00    2 hours
02:01:00    2 hours, 1 minute
01:03:00    1 hour, 3 minutes
23:59:59    23 hours, 59 minutes

Я не розумію цього рядка:11:59:59 23 hours, 59 minutes
Бен

1
@Ben - вибачте - це була помилка друку. Спочатку у мене був перший формат, відформатований AM / PM, потім його видалили, але вручну оновили приклад і не виправили останню.
andrew

1
@Ben - я додав альтернативу до відповіді - за допомогою формули.
andrew

1. Ага, бачу. 2. Дуже дякую! Я ціную це.
Бен-

1
Так, ви використовували б іншу формулу, щоб обчислити години та хвилини від загальної кількості хвилин. Задайте додаткове запитання, чи хочете ви піти цим шляхом.
andrew

1

Виберіть стовпець часу і просто застосувати цей формат, h" hours and "m" minutes". Ваш стовпець "Дата" буде виглядати приблизно так.

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


1
Це досить гарна відповідь. Але нестандартний формат повинен бути h "hours, " m "minutes"близьким до того, що намагається зробити Бен. Як зауважив Ендрю, швидше за все, етикетки не можуть бути єдиними, коли число дорівнює 1.
Bandersnatch

1

Ви можете спробувати використовувати TEXT()формулу з великою кількістю вкладених IF(). Це стане дуже громіздким у вашому випадку, оскільки у вас так багато можливих форматів. Я нарахував 8 різних можливостей.

Як приклад, ця формула

=IF(HOUR(A1)=1,IF(MINUTE(A1)=1,TEXT(A1,"h"" hour, ""m ""minute"""),TEXT(A1,"h"" hour, ""m ""minutes""")),TEXT(A1,"h"" hours, ""m ""minutes"""))

виконує потрібне форматування, як показано в таблиці нижче.

Формат усередині TEXT()функції повинен бути укладений в одинарні лапки, але цитати навколо позначок годин і хвилин повинні бути "уникнуті" за допомогою подвійних лапок.

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

Крім того, я не зміг правильно відобразити лише хвилини. Ця формула дає "1 хвилину" для кожного значення у стовпці А:

=TEXT(A1,"m"" minute""")

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