Excel Vba. Convert [m] format to general - excel

I have this piece of data in Excel that is 1:30. As I want to show the time elapsed in minutes, I define the cell format as [m], to get 90 as my display value. (Cell.Numberformat = [m])
Is there any way to convert this value to "general" format? I still want to have the value 90 in my cell but with "general" format.

If you convert your value of 90 minutes to 'General', excel will return a value of '0.0625'.
Try using Application.Text to store your display value of 90 as a variable.
myValue = CDbl(Application.Text(myValue, "[m]"))
After testing this on a value of 01:30:00, ('hh:mm:ss'), a value of 90 was returned.

Excel stores dates and times as numbers. Enter “1:30” in one cell and then “.062500” in another. Reformat the “1:30” cell as “number with six decimal places” and it will display as “.062500. Reformat the “.062500” cell as “h:mm” and it will display as “1:30”.
When you type into Excel it looks at the value and decides what sort of value it is. If it decides it is a date or a time or a date and time, it converts it to a number but sets the NumberFormat to match the format of the value.
The integer part of that number is: Days since 1/1/1900”
The fraction part of that number is Seconds since midnight / (24 * 60 * 60)
To display a time in minutes with a number format of "General ", you will need to place a formula in another cell with the value “=HOUR(xn)*60 + MINUTE(xn)” where xn is the address of cell you wish to convert.
Alternatively, a VBA macro could look for cells with a format of “hh:mm”, replace the cell’s value with the number of minutes and replace the NumberFormat with “General”

Related

Convert HH:MM values to H in the same column

Is there a way for me to format a column where the values I enter in the format HH:MM (elapsed time, not datetime) are converted to hours in decimal, preferably in the same column via some custom formula?
For example,
HH:MM
H (Decimal)
07:39
7.65
02:15
2.25
06:00
6
At the moment, I manually calculate the equivalent and enter them into the column but it would be nice to directly copy a timestamp and have the column automatically format it but I couldn't see an option for this in Date/Time formatting settings.
Simply multiply your hh:mm durations by 24, ensuring that the cells where you want the decimal hours returned are formatted as 'Number'. Or to force formatting as a number using a formula: =text(duration_cell*24,"#.##") where duration_cell is a cell with the duration in hh:mm format.
There is no way to do that I know of because Excel stores times/dates as floats. Each 24 hour period equals 1, therefore 7:33 equals .31458 Therefore, you won't be able to do this without a helper column.
You can do this with either #The God of Biscuits answer, or alternatively your helper column can have the formula:
=(A1*24)
and you set that column's cell format to Number.
All date and time is a format of a double value.
Time is the amount after the comma.
And all in front of comma is days since 00.01.1900.
Meaning 07:37:00 = 0,32 days.
Excel have a ways to pull the amount of hours with =HOUR('Your referance date time cell value')
You can aply this formula: =HORA(A2)+(MINUTO(A2)/60)

dd.mm.yyyy hh:mm incrementing by half hour in vba

I have got a start date and end date in this custom format
dd.mm.yyyy hh:mm in excel cells.
What i need is to fill specific row with dates incremented by half hour from start date to end date using VBA code. And i havent got any idea how to do this.
On web there are some examples with similar problems but with only months or only hours and those are dates format not custom.
You can do this with a simple formula.
Write your start date into cell A1
In A2 write =A1+(1/48)
Copy formula from A2 down
done.
How does this work?
Excel dates are represented as count of days since 1900. That means 1900-01-01 is the first day and represented by 1. All other dates are just the count of days since then. 1 represents one day. So since 1 day has 24 hours 1/48 represents half an hour.
The number format dd.mm.yyyy hh:mm how Excel shows the date is not relevant, because Excel only saves the value (amount of days since 1900) in the cell value.
So if you type the date of today into a cell 2018-10-11 Excel actually saves 43384 in the cell value (today it is 43384ᵗʰ day since 1900-01-01).
One option is to find the interval between start and stop point. Remember that excel dates that are actually dates and not strings are actually integers. The second thing to remember is time is the decimal part which represent fraction of a day. Test if your date (assuming it's in A1) is an actual date or a string with
=ISNUMBER(A1)
If that comes back TRUE you do not need to worry about converting your date. If it comes back FALSE, its actually a string and will need to be converted for excel to work with it.
Divide this interval by 30 minutes, or 30/60/24 to and add 1. This will tell you how many iteration you will need which you can put into a For loop
Start_Number = Range("A1")
End_number = Range(("A2")
Stamp = Start_Number
Interval_number = End_Number - Start_Number
Counter = integer of (Interval_number / (30/60/24))
For x = 1 to counter
write Stamp to cell
Stamp = Stamp + 30/60/24
Next x
Allternatively you could set up a while loop.
Do While datetime < Stop_Point
Write datetime to cell
Datetime=datetime + 30/60/24
Loop
Please note, not actual code but giving idea where OP had no idea where to start.

Create a timestamp given date values columns in Excel

I have a date in the following format:
Column A: Day (number form)
Column B: Month (number form)
Column C: Year (yy number form, in my case just 15 and 16 for 2015 and 2016)
Column D: Hour (number form, 0 through 23)
Column E: Minute (number form)
How can I convert this into a timestamp (namely, a timestamp representing number of minutes)? I don't see any kind of "dateserial" type function in Excel (at least on my Mac version).
You can do it with this formula:
=DATE(2000+C1,B1,A1)+TIME(D1,E1,0)
This will get you a number around 42000, you will need to format it in the number format you want.
Then if you want to time difference between two rows you would simply use:
=F2-F1
And format the cell with a custom format of [hh]:mm:ss
Note the method that excel stores date/time is:
Dates are whole numbers for each day since Jan 1st 1900 so we are currently in the 42000's.
Time is a decimal based on 24 hours being 1.
So both together my current time is 42531.63956 or 6/10/2015 3:21:33 or so, when the mask is applied.
Excel uses this method so we can do math on the values. The method on how the output is displayed depends on the format of the cell in which the number resides.
Something like this should work:
=DATE(CONCATENATE("20",C1),B1,A1) + TIME(D1,E1,0)

Convert Time Values (In-Cell) to Minutes - Excel VBA

I am trying to take the values of time passed (formatted HH:MM:SS) and convert it to just minutes.
The issue I am having is that when I try and get the value of the time-value cell, it converts it to some odd value.
Example:
Wrong Value (what Excel gives me now, in worksheet):
34:32:12 = 1.43902777777778
Right Value (what Excel should give me):
34:32:12 = 2072.2
Calcualted:
34*60 + 32 + 12/60
Assuming your source value is in cell A1, here is all you need:
=N(A1*1440)
This method does not require a reformatting of the output cell.
How does it work?
Dates and times are stored in Excel as a combined number... where the integer portion represents the number of days since December 31, 1899 (although the year that Excel calculates from can be changed to 1904 in the Excel Options, but that is immaterial).
The decimal portion of the stored number represents the time component to associate with the date.
Your value of 1.43902777777778 is correct. It states that the ~34.5 hours represents ~1.44 days.
Since you are interested in minutes, we convert that days figure to minutes by multiplying by 1440 as there are 1440 minutes in a day.
The N() function that wraps that calculation ensures that the displayed output is treated as numeric by Excel. Otherwise the output cell would adopt the date-formatting of A1.
Either format the cell as [m] to see 2072, or multiply by 1440 (the number of minutes in a day) and format as 0.0 to see 2072.2

How to sum times with different format cells?

I have first cell with format dd.h:mm and second cell with format h:mm:ss. I tried to sum these 2 cells, but I get #VALUE!
How to sum these 2 cells and receive resulting cell with format dd.h:mm?
Edited:
Perhaps I don't know how to format cells as dates/times, because I just selected the custom format of the cells and typed the following 14.09:32 for 1st cell and 0:01:35 for the 2nd one.
How to format cells as times?
You must first understand that Excel stores date and time as a numeric value representing the number of DAYS from 1/1/1900. For example, if you set the format of a cell to dd.hh:mm as you suggest, then type in the number 42 you will get 11.0:00. If you look at date that it converts to to in the formula bar you will see 2/11/1900 12:00:00 AM because this is 42 days from 1/1/1900 12:00:00 AM. Hence the result based on your format: 11.0:00 (11th day and 0 zero hours and minutes).
When you type in 14.09:32 excel does not recognize this a numeric value and therefore stores this as text. You cannot add two texts fields together arithmetically, that is why you are getting #VALUE!.
When it comes to hours, minutes, seconds, and milliseconds these can be represented by everything after the decimal point in a date value. For example: 1 + (1 / 24) equals 1/1/1900 01:00: AM. Since 1 equals exactly one day then 1 / 24 equals exactly 1 hour.
So, if you want to add, let's say 560 milliseconds to a date value, let's say A1 has a date value, you would do it like this:
=A1+(560 * (1 / (1000 * 60 * 60 * 24))) ... since there are 1000 milliseconds in a second, 60 seconds in an minute, 60 minutes in an hour, and 24 hours in a day.
To see milliseconds in your date you can create a custom format like this:
h:mm:ss.000
The .000 part tells excel to display the milliseconds.
In conclusion, the format of the date has nothing to do with how it is stored - it only tells excel how to display the date. The bottom line is that if you remember that a date value is simply a number representing the number of days since 1/1/1900 12:00:00 AM you should be able to do your addition.
If you expand on exactly what you're trying to do perhaps I can help you further.
Cheers,
Z

Resources