# How to Convert Decimal Hours to Hours and Minutes in Excel

If you have a decimal time value like 7.75 and need it to read as 7 hours 45 minutes, Excel can do that with a short formula. The core idea is to split the number into whole hours and a fractional part, then multiply that fraction by 60 to get minutes. This article shows three reliable ways to convert decimal to hours and minutes, explains when each one fits, and covers the errors that trip people up.

## Quick Answer

- **INT and ROUND:** `=INT(B2)&" h "&ROUND((B2-INT(B2))*60,0)&" min"` splits the whole hours from the decimal and converts the remainder to minutes. It returns a text string.
- **TEXT with division:** `=TEXT(B2/24,"h"" h ""m"" min""")` treats the decimal as hours, divides by 24 to get an Excel time serial, and formats it. It returns text.
- **TIME:** `=TEXT(TIME(INT(B2),ROUND((B2-INT(B2))*60,0),0),"h"" h ""m"" min""")` builds a real time value first, then formats it.
- All three handle values like 7.75, 8.5, 6.25 and 9 correctly in Excel, because an `m` that follows an `h` code is read as minutes.
- If you need a number you can add up later, keep the decimal in one column and put the formatted text in another.

## Before You Start

Excel stores dates and times as serial numbers. A full day is 1, so one hour is $1/24$ and one minute is $1/1440$. That is why dividing a decimal hour value by 24 turns it into something Excel recognizes as a time. This matters because the TEXT and TIME formulas rely on that conversion, while the INT and ROUND formula does not.

You also need to know what your decimal actually represents. A value of 7.75 means 7 hours and 45 minutes because $0.75 \times 60 = 45$. A value of 7.1 means 7 hours and 6 minutes because $0.1 \times 60 = 6$. If your source data was rounded to one decimal place, the minutes will only be accurate to about 6 minutes. Check the source before you trust the output.

Finally, decide whether you want text or a real time value. Text is fine for reports and labels. A real time value is better if you plan to subtract times, sum them, or feed them into another calculation. If you are working with other time units, the same serial-number logic applies to [formatting and calculating milliseconds in Excel](/blog/data-analysis/excel-milliseconds-format).

## Step by Step

1. Put your decimal hours in a column, for example B2 through B6. Format that column as General or Number so the decimals show properly.
2. In C2, enter the INT and ROUND formula: `=INT(B2)&" h "&ROUND((B2-INT(B2))*60,0)&" min"`. INT pulls out the whole hours. The subtraction leaves the fraction. Multiplying by 60 converts it to minutes, and ROUND cleans up floating-point noise.
3. In D2, enter the TEXT formula: `=TEXT(B2/24,"h"" h ""m"" min""")`. Dividing by 24 converts decimal hours into an Excel time serial, and TEXT applies a custom format.
4. In E2, enter the TIME formula: `=TEXT(TIME(INT(B2),ROUND((B2-INT(B2))*60,0),0),"h"" h ""m"" min""")`. TIME builds an actual time value from hours, minutes and seconds.
5. Copy C2, D2 and E2 down to row 6. Each row recalculates for its own decimal value.
6. Compare the three columns. They should agree on every row.

The double quotes inside the TEXT format string are how you embed literal text. Each pair of doubled quotes produces one visible quote character in the format code, so `"h"" h ""m"" min"""` displays something like 7 h 45 min.

## Worked Example

The table below uses a small timesheet with five employees and their decimal hours. Every formula result shown was produced by Excel's formula engine.

| Row | A (Employee) | B (Decimal Hours) | C (INT & ROUND Formula) | D (TEXT Formula) | E (TIME Formula) |
|---|---|---|---|---|---|
| 1 | Employee | Decimal Hours | INT & ROUND Formula | TEXT Formula | TIME Formula |
| 2 | Ana | 7.75 | `=INT(B2)&" h "&ROUND((B2-INT(B2))*60,0)&" min"` -> displays 7 h 45 min | `=TEXT(B2/24,"h"" h ""m"" min""")` -> displays 7 h 45 min | `=TEXT(TIME(INT(B2),ROUND((B2-INT(B2))*60,0),0),"h"" h ""m"" min""")` -> displays 7 h 45 min |
| 3 | Ben | 8.5 | `=INT(B3)&" h "&ROUND((B3-INT(B3))*60,0)&" min"` -> displays 8 h 30 min | `=TEXT(B3/24,"h"" h ""m"" min""")` -> displays 8 h 30 min | `=TEXT(TIME(INT(B3),ROUND((B3-INT(B3))*60,0),0),"h"" h ""m"" min""")` -> displays 8 h 30 min |
| 4 | Cara | 6.25 | `=INT(B4)&" h "&ROUND((B4-INT(B4))*60,0)&" min"` -> displays 6 h 15 min | `=TEXT(B4/24,"h"" h ""m"" min""")` -> displays 6 h 15 min | `=TEXT(TIME(INT(B4),ROUND((B4-INT(B4))*60,0),0),"h"" h ""m"" min""")` -> displays 6 h 15 min |
| 5 | Dan | 9 | `=INT(B5)&" h "&ROUND((B5-INT(B5))*60,0)&" min"` -> displays 9 h 0 min | `=TEXT(B5/24,"h"" h ""m"" min""")` -> displays 9 h 0 min | `=TEXT(TIME(INT(B5),ROUND((B5-INT(B5))*60,0),0),"h"" h ""m"" min""")` -> displays 9 h 0 min |
| 6 | Eli | 7.1 | `=INT(B6)&" h "&ROUND((B6-INT(B6))*60,0)&" min"` -> displays 7 h 6 min | `=TEXT(B6/24,"h"" h ""m"" min""")` -> displays 7 h 6 min | `=TEXT(TIME(INT(B6),ROUND((B6-INT(B6))*60,0),0),"h"" h ""m"" min""")` -> displays 7 h 6 min |

All three columns agree in real Excel. Ben's 8.5 hours shows as 8 h 30 min and Dan's 9 hours shows as 9 h 0 min in every column.

In a time format, `m` means minutes when it immediately follows an `h` code, even with literal text in between. Used on its own without an `h` or `s` next to it, `m` means month, so keep the `h` code in place.

## Other Ways to Do It

**Use a custom number format instead of TEXT.** If you want the cell to keep its numeric value but display as hours and minutes, divide by 24 and apply a custom format. Select the cell, open Format Cells, choose Custom, and enter `[h] " h " mm " min"`. The square brackets around `h` keep hours from rolling over past 24. This keeps the underlying value usable in other formulas.

**Use HOUR and MINUTE on a time serial.** If you already have a real time value, `=HOUR(A1)&" h "&MINUTE(A1)&" min"` extracts the parts. This only works when A1 is a genuine time serial, not a decimal hour count.

**Convert the other direction.** To go from hours and minutes back to a decimal, use `=hours + minutes/60`. This is the inverse of everything above and is useful when you need to sum mixed entries. The same split-and-recombine pattern appears in [converting inches to feet and inches in Excel](/blog/data-analysis/convert-inches-to-feet-and-inches-excel), where you separate a whole unit from a remainder.

**Round the decimal first.** If your source data has more precision than you need, wrap the input in ROUND before converting, for example `=ROUND(B2,2)`. This prevents stray seconds from appearing. The principles in [rounding to the nearest thousandth in Excel](/blog/data-analysis/round-to-nearest-thousandth-excel) apply to any precision level.

## Troubleshooting

**The result shows a date instead of hours and minutes.** Your cell is formatted as a date. Change the format to General or Text, or use the INT and ROUND formula, which always returns text.

**Minutes show as a month number.** An `m` code with no `h` or `s` beside it is read as a month. Keep an `h` code before the `m`, or switch to the INT and ROUND formula.

**You see a long decimal like 7.7499999.** This is normal floating-point behavior. ROUND fixes it, which is why every formula here wraps the minute calculation in ROUND.

**The formula returns an error.** Check that the cell reference points to a number, not text. A decimal stored as text will not calculate. The fixes in converting text to number in Excel cover this.

**Hours over 24 roll over.** If you use a plain `h` format code, 25.5 hours may display as 1 h 30 min. Use `[h]` in a custom format to keep the full hour count.

## Common Mistakes

- **Using `m` alone in a TEXT format code.** Without an `h` code before it, Excel reads it as a month. Keep the `h` code, or use the INT and ROUND formula.
- **Forgetting to divide by 24.** A decimal hour value is not a time serial. Without the division, TEXT treats the raw number as days, so 7.75 displays as 18 h 0 min.
- **Skipping ROUND.** Floating-point math produces values like 44.99999 minutes. Always round the minute calculation.
- **Assuming one decimal place means exact minutes.** 7.1 hours is 7 h 6 min, not 7 h 10 min. The decimal is a fraction of an hour, not minutes.
- **Formatting the output cell as a date.** Text results can be misread if the cell format is wrong. Set it to General.
- **Trying to sum the text results.** Text like "7 h 45 min" cannot be added. Keep a numeric column for totals.

## Limitations

The INT and ROUND method returns text, so you cannot sum, average or subtract those cells directly. If you need totals, keep the original decimal hours in a separate column and sum that instead. The TEXT and TIME methods also return text, and the TIME version cannot show more than 23 hours because TIME wraps at 24.

None of these formulas validate your input. If someone enters 7.75 meaning 7 minutes 75 seconds, the formula will still return 7 h 45 min. Decimal hours are a convention, and the formula trusts that convention. For payroll or billing, confirm the source system records time as decimal hours before you convert.

## Frequently Asked Questions

### Why does 8.5 show as 8 h 3 min instead of 8 h 30 min?

In real Excel the TEXT formula shown here returns 8 h 30 min, because `m` after `h` is read as minutes. If you see 8 h 3 min or a month number, check that the format code still has the `h` before the `m`, or use the INT and ROUND formula.

### How do I convert decimal to hours and keep the result as a number?

Multiply the decimal by 60 to get total minutes, or keep the decimal in one column and put the formatted text in another. You can also divide by 24 and apply the custom number format `[h] " h " mm " min"`, which displays 7 h 45 min while the cell stays a number.

### Can I convert a whole column at once?

Yes. Enter the formula in the first data row, then copy it down. If your data is in an Excel Table, the formula fills the whole column automatically. Relative references adjust for each row.

### What if my decimal hours include seconds?

Multiply the fractional part by 3600 instead of 60 to get seconds, then split those into minutes and seconds. For finer time units, see [Excel milliseconds formatting and calculation](/blog/data-analysis/excel-milliseconds-format).

### Does this work for negative values?

INT rounds negative numbers down, away from zero, so -7.75 returns -8 h 15 min, which is not what most people expect. Handle negatives separately by taking the absolute value, converting, then adding the sign back.

## References

This article draws on the standard references listed under Further Reading.

## Further Reading

- [Broman KW, Woo KH (2018). Data Organization in Spreadsheets. The American Statistician](https://doi.org/10.1080/00031305.2017.1375989)
- [Ziemann M, Eren Y, El-Osta A (2016). Gene name errors are widespread in the scientific literature. Genome Biology](https://doi.org/10.1186/s13059-016-1044-7)
- [Microsoft Support: Excel help and learning](https://support.microsoft.com/en-us/excel)
- [McCullough B, Heiser DA (2008). On the accuracy of statistical procedures in Microsoft Excel 2007. Computational Statistics &amp; Data Analysis](https://doi.org/10.1016/j.csda.2008.03.004)
- [Abeysooriya M, Soria M, Kasu MS et al. (2021). Gene name errors: Lessons not learned. PLOS Computational Biology](https://doi.org/10.1371/journal.pcbi.1008984)
- [Wilson G, Bryan J, Cranston K et al. (2017). Good enough practices in scientific computing. PLOS Computational Biology](https://doi.org/10.1371/journal.pcbi.1005510)

## Related Articles

- [Excel Milliseconds: How to Format and Calculate Time](/blog/data-analysis/excel-milliseconds-format)
- [Excel Date Formulas: How to Add, Subtract and Format Dates](/blog/data-analysis/excel-date-formulas-add-subtract-format)
- [How to Calculate Age in Excel (Step by Step)](/blog/data-analysis/how-to-calculate-age-in-excel)
- [How to Round to the Nearest Thousandth in Excel](/blog/data-analysis/round-to-nearest-thousandth-excel)