Working with milliseconds in Excel

Milliseconds are not first-class citizens in Excel. There’s no MILLISECOND equivalent to the SECOND function and you will not find a predefined time format that includes hours, minutes, seconds and milliseconds.

This does not mean that Excel cannot process time values with milliseconds. The only requirement is that they are in a format that Excel recognizes. You should also assign a custom format to the cells so that you can easily read the values. I will explain these two aspects in this article and present solutions to common millisecond related tasks and problems. If you’re only interested in a brief summary, jump to the TL;DR at the end.

Note: I’m using US region settings for this article. Other regions may require different formats, e.g. “hh:mm:ss,000” for Germany (with a comma instead of a dot).

Time formats with milliseconds recognized by Excel

Internally, Excel stores time values as fractions of a day (24 hours). This means that 12h are represented as 12÷24 = ½ = 0.5 (half a day) and 3h as 3÷24 = 0.125. In this representation, 1ms is only a tiny value: 1ms ÷ (24h × 60min/h × 60s/min × 1000ms/s) = 1÷86400000 ≈ 0.000000011574074 (compare this to the numeric precision of Excel).

This makes the calculation of time differences very easy, but entering values in this way is not particularly user friendly. Fortunately, Excel also recognizes the following format and similar variants:


Example: “01:23:45.678” stands for one hour, 23 minutes, 45 seconds and 678 milliseconds. You do not have to type leading zeros (or trailing zeros in the milliseconds part).

Numbers entered like this or read from a file in this format are converted to fractions of a day. However, they are not displayed correctly until you assign a corresponding custom format to the cells, as explained below.

Custom cell format with milliseconds

Practical example

Click here to download a CSV file created by our data acquisition software Simple Data Logger during a fill weighing operation using an A&D GX-A precision balance. The software was configured to record the date, time (with milliseconds) and weight:

Time with milliseconds in weight recording software
The time format pattern in this software is slightly different from the one used by Excel. To the right of the “add time” field, you can see that it produces the desired output.

After opening the CSV file in Excel, you will notice that the time is not displayed correctly:
CSV file opened in Excel, date, time (not formatted correctly) and weight

This can be fixed by assigning the following custom format to the cells (select the column containing the time, right-click and choose “format cells”):


The square brackets indicate that this is an “elapsed time” format that can display hourly values equal to or greater than 24h. Once applied, the time values are shown in the desired format:

Date, time with milliseconds and weight shown correctly in Excel

Common tasks when using milliseconds in Excel

Calculating time differences

Thanks to the numeric format used internally by Excel, you can perform all kinds of calculations with time values. To calculate a time difference, simply subtract the later time from the earlier one:

Calculating with milliseconds in Excel

If the result consists of “############” instead of the expected time difference, there can be several reasons:

  • You may need to apply the same custom [hh]:mm:ss.000 format as above to the results.
  • The result is a negative value. Excel does not like negative time values, but there are some workarounds.

Be careful with date changes! The simple time difference formula used above will fail at midnight. Fortunately, dates are internally stored as whole numbers and you can therefore simply add the date and time values before performing the subtraction as I’ve explained here.

Show milliseconds only

Excel does not have a MILLISECOND function to return only the milliseconds of a time value. You can use the following formula instead:

=RIGHT(TEXT(D2, "hh:mm:ss.000"),3)*1

This takes the 3 rightmost characters (the milliseconds) from the D2 cell and multiplies them by one to ensure the result is treated as a number (not text).

Format the cells in the result column as a number without decimal places and you will see that only the milliseconds have been extracted:

Milliseconds extracted from time in Excel

You can then easily perform calculations such as MIN, MAX, STDEV.P, etc.

Conversion of time values into milliseconds

If you want to convert entire time values to milliseconds instead of just extracting the milliseconds part, there are two approaches that should lead to the same result.

You can use the built-in HOUR, MINUTE and SECOND functions together with our MILLISECOND function replacement (see above) to convert a time value (in cell D2):

=HOUR(D2)*3600000+MINUTE(D2)*60000+SECOND(D2)*1000+RIGHT(TEXT(D2, "hh:mm:ss.000"),3)

There is also an elegant alternative to this solution: You can simply multiply the time value by 86400000 to convert it into milliseconds. This works because of the internal numeric format used by Excel where 1 is equal to 24h = 24h × 60min/h × 60s/min × 1000ms/s = 86400000ms.

Use an easier format to manually enter times with milliseconds

The time values with milliseconds used for the examples above were already available in the “hh:mm:ss.000” format required by Excel. But what if you must enter many time values manually? Maybe you prefer a format that only uses dots so you can keep your hand on the numeric keypad, e.g. instead of 1:25:54.010.

For Excel to recognize these values as times, they must be converted to the “hh:mm:ss.000” format. However, if you use the SUBSTITUTE function to replace all dots with colons, you wont preserve the last dot. The solution is to limit SUBSTITUTE to replace only the first occurrence of a dot and then apply it again to replace the second dot, leaving the last one intact. The required formula looks complicated but is actually simple (it assumes the value you want to transform is contained in cell A2):


Please try it out before you manually enter hundreds of time values using the dot format. It worked fine for me:

Excel time with milliseconds entered with dot

TL;DR (too long, didn’t read)

  1. Make sure that your time values are available as hh:mm:ss.000, e.g. “01:23:45.678”.
  2. Assign the following custom format to your cells: [hh]:mm:ss.000.

Record the weight from a scale or balance to a file – Simple Data Logger software

Connecting your scale to a PC and recording the weight should not be a difficult task. However, data logging software available from scale manufacturers or third parties is often expensive, difficult to use or frustratingly unreliable. We developed Simple Data Logger (SDL) to address these issues.

SDL writes the weight received from a scale or balance to a file, optionally adding the date and time. The CSV files generated by SDL can easily be opened in Excel and other spreadsheet applications for further processing and visualization.

Recording the weight from a precision balance using Simple Data Logger

SDL currently supports the following connections:

  • COM port: RS-232, USB virtual COM port, Bluetooth SPP, etc.
  • TCP/IP: Ethernet, WLAN (raw TCP format only).

Note: Your scale has to send data in ASCII format.

Get started recording weight values with Simple Data Logger

Connect your scale to your computer, download and install SDL, then follow these steps to configure the software (updated on December 7, 2019 – please refer to the documentation on the SDL website for the latest instructions):

  1. Input tab:
    Input tab: A&D scales and balancesIf your scale or balance is listed in SDL, simply select it and press the set default parameters for device button. Otherwise, select “generic measuring instrument” and enter the interface parameters manually. Set the radio button to match your connection: COM port (RS232, USB VCP, Bluetooth SPP) or TCP/IP.Make sure that you’ve specified a terminator (a.k.a. delimiter, the last character your scale sends in each line of data) or a timeout (e.g. 100ms, SDL will process received data if no additional data is received during this time).
  2. Output tab:
    Output tab (English US)Choose a file for the recorded data. SDL will create if for you if it does not exist (otherwise, data will be appended). Choose (or enter) a date and time format or select “None” from the list if you do not want SDL to add the date or time. Pick a decimal separator (for numeric values) and value separator (used to separate values from each other). The correct settings for your locale can be made automatically by clicking on the set values button.
  3. Start tab:
    Start tab: A&D FX-300i balancePress the start button to start recording data. Press the “PRINT” button on your scale or balance to send the weight to SDL. Depending on you scale, this button might have a different name (e.g. “DATA”). Some scales like the A&D FX-300i used in this example also have to ability to automatically transfer each (stable) weight. Data received will be shown in the event log (with the captured weight value shown in blue) and the weight will be written to the chosen file. Press stop to stop data logging and to close the file.

    Note: SDL can also handle continuous streams of weight data if this is what your application calls for (we’ve tested it with a scale which sends 100 values per second). The total number of recorded values is only limited by your disk space (but please keep in mind that Excel cannot open files containing more than 1,048,576 rows).

Process the weight values in Excel (or other spreadsheet applications)

Provided that you’ve made the right format settings in the output tab, you can easily open the CSV file in Excel (or other spreadsheet applications like Google Docs, OpenOffice/LibreOffice Calc). The weight will be recognized as a number, allowing you to make further calculations (i.e. calculating the total weight as shown below):
Everything shown here can be done with the “Basic” version of SDL (which is free for personal, non-commercial use). The “Plus” version has additional features including a timer to request the weight from the scale in user-defined intervals.

Very affordable licences can be purchased from our partner FastSpring (immediate license delivery).


Links and further information