Відобразити мілісекунди в Excel


122

Я намагаюся відобразити мілісекунди в макросі Excel. У мене є стовпець цілих чисел, який є часовими позначками в мілісекундах (наприклад, 28095200 - це 7: 48: 15.200 ранку), і я хочу створити поруч новий стовпець, який зберігає середнє значення та відображає час у hh:mm:ss.000форматі.

 Dim Cel As Range
 Set Cel = Range("B1")
 temp = Application.Average(Range("A1:A2")) / 1000
 ms = Round(temp - Int(temp), 2) * 1000
 Cel.Value = Strings.Format((temp / 60 / 60 / 24), "hh:mm:ss") _
                & "." & Strings.Format(ms, "#000")

Це відображає лише "mm: ss.0" у комірці. Але коли я натискаю на клітинку, на панелі формул відображається "hh: mm: ss". Чому пропадають години? Як я можу показати години, хвилини, секунди та мілісекунди?

Відповіді:


217

Клацніть правою кнопкою миші на Cell B1і виберіть " Форматування комірок" . У користувальницькій формі введіть у текстове поле з написом Тип :

[h]:mm:ss.000 

Щоб встановити це в коді, ви можете зробити щось на кшталт:

Range("A1").NumberFormat = "[h]:mm:ss.000"

Це має дати вам те, що ви шукаєте.

ПРИМІТКА. Спеціально відформатовані поля часто вимагають, щоб ширина стовпця була достатньо широкою для всього вмісту форматованого тексту. В іншому випадку текст відобразиться як ######.


Так! Але чи є спосіб це зробити в коді? Тепер кожного разу, коли я запускаю макрос, форматування відновлюється. (тому що я видаляю та відтворюю аркуш у макросі.) Cel.EntireRow.NumberFormat = "[h]: mm: ss.000" Але це просто дало мені "######" у комірці.
Евелін

@Evelyn - 3 речі: 1) Я додав потрібний вам код, щоб встановити формат числа. 2) Переконайтеся, що ваш стовпець достатньо широкий, щоб вмістити весь відформатований текст. Дивіться мою замітку вище. 3) відповідь знайомства Гілберта і зверніть увагу на використання 3в Roundфункції. Це гарантує, що ви отримаєте 3 десяткових знаки замість лише 2.
Бен Маккормак

Ах! Ти правий. Мені просто потрібно було розширити колону. Також я хотів лише точності 2 у цьому випадку. Я просто хотів, щоб він був відформатований для 3. Дякую за допомогу!
Евелін

25
Щойно я виявив наступне і хотів поділитися цим випадком, якщо інші також відчувають цю проблему: Якщо ваш Windows / Excel налаштований для Німеччини, його .потрібно замінити ,, як і для десяткових знаків у числах. Інакше Excel поскаржиться, що це не допустимий формат. Отже, це має бути[h]:mm:ss,000
gehho

6

Я виявив в Excel 2007, якщо результати є таблицею з вбудованого запиту, ss.000 не працює. Я можу вставити результати запитів (від студії управління SQL Server) і просто відформатувати час. Але коли я вкладаю запит як З'єднання даних в Excel, формат завжди дає .000 як мілісекунди.


4

Я робив це в Excel 2000.

Ця заява повинна бути: ms = Round(temp - Int(temp), 3) * 1000

Вам потрібно створити спеціальний формат для осередку результатів [h]:mm:ss.000


-3

Спочатку представляйте епоху мілісекундного часу як дату (зазвичай 1/1/1970), потім додайте мілісекундний час, поділений на кількість мілісекунд в день (86400000):

=DATE(1970,1,1)+(A1/86400000)

Якщо ваша комірка відформатована належним чином, ви повинні побачити людину, зрозумілу дату / час.


Привіт, Джордж і ласкаво просимо! На жаль, ОР, здавалося, спеціально просить спосіб досягти того, щоб комірка була "належним чином відформатована". Їх оригінальний підхід вже охоплює ту частину, до якої ви звертаєтесь: перетворення часової позначки в мілісекунди у форматне значення дати. Крім того, з шести років, це досить старе питання, на яке ви інвестуєте свій час. Ваш внесок буде більш вдячний за нові запитання!
Карстен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.