Menampilkan milidetik di Excel

122

Saya mencoba menampilkan milidetik dalam makro Excel. Saya memiliki kolom bilangan bulat yang merupakan cap waktu dalam milidetik (misalnya 28095200 adalah 7:48: 15.200 pagi), dan saya ingin membuat kolom baru di sebelahnya yang membuat rata-rata berjalan dan menampilkan waktu dalam hh:mm:ss.000format.

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

Ini hanya menampilkan "mm: ss.0" di dalam sel. Namun ketika saya mengklik sel, itu menunjukkan "hh: mm: ss" di bilah rumus. Mengapa jamnya hilang? Bagaimana cara menampilkan jam, menit, detik, dan milidetik?

Evelyn
sumber

Jawaban:

217

Klik kanan pada Cell B1dan pilih Format Cells . Di Kustom , letakkan berikut ini di kotak teks berlabel Type :

[h]:mm:ss.000 

Untuk mengatur ini dalam kode, Anda dapat melakukan sesuatu seperti:

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

Itu akan memberi Anda apa yang Anda cari.

CATATAN: Bidang dengan format khusus sering kali mengharuskan lebar kolom cukup lebar untuk seluruh konten teks yang diformat. Jika tidak, teks akan ditampilkan sebagai ######.

Ben McCormack
sumber
Yay! Tapi adakah cara saya bisa melakukan itu dalam kode? Sekarang setiap kali saya menjalankan makro, pemformatan disetel ulang. (karena saya menghapus dan membuat ulang sheet di makro.) Cel.EntireRow.NumberFormat = "[h]: mm: ss.000" Tapi itu hanya memberi saya "######" di sel.
Evelyn
@Evelyn - 3 hal: 1) Saya menambahkan kode yang Anda butuhkan untuk mengatur format angka. 2) Pastikan kolom Anda cukup lebar untuk memuat seluruh teks yang diformat. Lihat catatan saya di atas. 3) Lihat jawaban Gilbert dan catat penggunaan 3dalam Roundfungsinya. Ini memastikan Anda mendapatkan 3 tempat desimal, bukan hanya 2.
Ben McCormack
Ah! Kamu benar. Saya hanya perlu memperluas kolom. Juga, saya hanya menginginkan akurasi 2 dalam kasus ini. Saya hanya ingin ini diformat untuk 3. Terima kasih banyak atas bantuannya!
Evelyn
25
Saya baru saja menemukan yang berikut ini dan ingin membagikannya jika orang lain juga mengalami masalah yang sama: Jika Windows / Excel Anda dikonfigurasi untuk Jerman, maka .harus diganti dengan ,, seperti tempat desimal dalam angka. Jika tidak, Excel akan mengeluh bahwa itu bukan format yang valid. Jadi, itu harus[h]:mm:ss,000
gehho
6

Saya telah menemukan di Excel 2007, jika hasilnya adalah Tabel dari kueri yang disematkan, ss.000 tidak berfungsi. Saya dapat menempelkan hasil kueri (dari SQL Server Management Studio), dan memformat waktu dengan baik. Namun saat saya menyematkan kueri sebagai Koneksi Data di Excel, formatnya selalu memberikan .000 sebagai milidetik.

Eric
sumber
4

Saya melakukan ini di Excel 2000.

Pernyataan ini harus: ms = Round(temp - Int(temp), 3) * 1000

Anda perlu membuat format kustom untuk sel hasil [h]:mm:ss.000

Gilbert Le Blanc
sumber
-3

Pertama-tama, gambarkan periode waktu milidetik sebagai tanggal (biasanya 1/1/1970), lalu tambahkan waktu milidetik Anda dibagi dengan jumlah milidetik dalam sehari (86400000):

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

Jika sel Anda diformat dengan benar, Anda akan melihat tanggal / waktu yang dapat dibaca manusia.

George
sumber
Hai George dan selamat datang! Sayangnya, OP tampaknya secara khusus meminta cara untuk mencapai bahwa sel "diformat dengan benar". Pendekatan aslinya sudah mencakup bagian yang Anda tangani: konversi stempel waktu milidetik menjadi nilai waktu yang dapat diformat. Selain itu, dengan enam tahun, itu pertanyaan yang agak lama Anda menginvestasikan waktu Anda. Masukan Anda akan lebih dihargai untuk pertanyaan baru!
Carsten