aggregate hours minutes seconds text columns to time - Excel - excel

I have 3 columns formatted as text: hours, minutes, seconds
I need to consolidate them in a time format
e.g.
1 34 56 -> I need a cell with 1:34:56
23 02 11 -> 23:02:11
Is this possible without macro/code?
I had issues with escaping the colon

Did you look up the "TIME" built in function? See the screen shot ...

Related

Custom time format excel: don't display zeros if hours or minutes are zeroes

There was an question placed before and it got the answer:
Thanks for that.
"Right now I have formatted my cell with:
h "hours" m "minutes"
So if my cell has 7:00, it displays as 7 hours 0 minutes. Is there a way to remove the hours or the minutes if these are zero? Something like 7 hours, or 0:30 as 30 minutes"
The answer was:
If you have Excel 2007 or later versions (but apparently not Excel for Mac 2011) you can achieve this with a combination of regular formatting and conditional formatting.
Assuming data in A1 down use a regular custom format like this
[<0.0415][m]" minutes";h "hours" m "minutes"
That will give you the same as your previous formatting except that any value < 01:00 will display like
30 minutes
Now you can add a conditional formatting condition. With column A selected do this
Conditional Formatting > New Rule > Use a formula to determine which cells to format > type this formula in the box
=MINUTE(A1)=0
Click the "format" button and set the following number format
h" hours"
Now if you have 16:00 in A1 that will display as just 16 hours
[conditional formatting rules will always supersede regular formatting]
But I wonder if it is possible in addition to this add time format in a way like if I have 1 hour it shows "1 hour" (in singular) instead of "1 hours"?
This should do this trick
Add this to Custom type box
[<0.0415][m] "minutes";[<0.083][h] "hour" m "minutes";[h] "hours" m "minutes"
inputs/outputs
inputs -
00:05:00
00:30:00
01:05:00
01:30:00
02:30:00
outputs -
5 minutes
30 minutes
1 hour 5 minutes
1 hour 30 minutes
2 hours 30 minutes
Notes
By putting the square bracket around [h] it will allow for more than 24 hours to be added e.g. 31 hours 30 minutes.
In Excel 1 minute is equal to 0.00069444 (1/1440 of a day). Knowing this helps to calculate the two less-then numbers.
Alternative option
If you just want h rather than hour and m rather than minutes try this
[<0.0415][mm] "m";[h] "h" mm "m"
=IF(HOUR(B9)<>0,HOUR(B9)&" hour"&IF(HOUR(B9)<>1,"s "," "),"")&IF(MINUTE(B9)<>0,MINUTE(B9)&" minute"&IF(MINUTE(B9)<>1,"s",""),"")
TLDR : extract every values manually > then put if conditions for 0,1 and other > print value..
Hope it helps.

SUBSTITUTE formula to separate hours and minute by comma

I have formula to separate hours and minutes by comma.
=CEILING(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(P96;"s";"");" min";"");" hour ";",");0,1)
This works for 4 hours 40 mins and 1 hour 10 mins. However there might case like 20 mins. Then my formula is displaying 20 that is not correct and should be 0,2. Any suggestions how to fix this issue?
Note! Values like 4 hours 40 mins are in one cell, in this case in cell P96. Information comes straight from Google Maps xml.
=CEILING(IF(ISNUMBER(SEARCH("hour";P96));SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(P96;"s";"");" min";"");" hour ";",");"0,"&SUBSTITUTE(SUBSTITUTE(P96;"s";"");" min";""));0,1)
Conditionally add a dummy prefix that satisfies the hours substitution.
=CEILING(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(ISERROR(SEARCH("hour"; P96)); "0 hours "; "")&P96;"s";"");" min";"");" hour ";",");0,1)
Type your time in cell A1. As an example, you could type "2:30", "14:30" or "2:30 PM".
Type "=HOUR(A1)" in cell A2 to produce only the hour. As an example, extracting the hour "2:30 PM" would give you "14," because 2 PM is the fourteenth hour in the day.
Type "=MINUTE(A1)" in cell A3 to extract the minutes.
Type "=SECOND(A1)" in cell A4 to extract the seconds.

Excel time conversion from words

I was sent a spread sheet and it listed the times as "00 hours 04 minutes 44 seconds" how do i convert 00 hours 04 minutes 44 seconds into a regular time like 04:44 in excel?
Try this, assuming your data is in cell A1:
=RIGHT(LEFT(A1, FIND("hours", A1)-2), 2)&":"&RIGHT(LEFT(A1, FIND("minutes", A1)-2), 2)&":"&RIGHT(LEFT(A1, FIND("seconds", A1)-2), 2)
You can see what each individual piece is doing if you split it apart at the &. For example, =RIGHT(LEFT(A1, FIND("minutes", A1)-2), 2) returns "04". One level in from that, LEFT(A1, FIND("minutes", A1)-2) returns "00 hours 04", and you need the right two characters of that.
This should work regardless of what order the hours, minutes, and seconds are in.
The CGritton's solution shows the time as text (you can not change the format or do some calculation with it).
If all cells have the same format ## hours ## minutes ## seconds you can simplify the formula.
Assuming that you have "00 hours 04 minutes 44 seconds" in cell B4, just type, for example in cell D4:
=TIME(LEFT(B4,2),MID(B4,10,2),MID(B4,21,2))
Then you can change the format to: hh:mm:ss AM/PM or hh:mm AM/pm or hh:mm

Time Lookback Calculation

I have two columns:
Column A: Time (seconds from midnight)
Column B: Value (arbitrary value I've created)
How would I find the average value (column B) at any instance in time(row) looking back over the previous x seconds (column A)?
Lets assume A1 = Seconds after midnight
Seconds after midnight Value
0 27
2 29
6 2
16 29
20 19
24 4
34 2
40 1
44 4
54 12
64 12
71 3
81 30
91 21
92 1
93 27
97 12
104 30
112 25
Note that time deltas are variable so I can't just look at the last x rows.
A specific question would be:
In a new column (column C) return the average Value of the last 10 seconds of data.
I have no idea how to do this. Can anyone help? It'd be greatly appreciated.
EDIT:
The output in the first 4 rows of column C would be:
Seconds after midnight Value Result
0 27 No values prior to this one
2 29 27 Average(B2)
6 2 28 Average(B2:B3)
16 29 2 Average(B4)
For each row, I'm taking the current time (16 in the last case)...going back x seconds (10 seconds in this case) and then averaging the values from all the cells in that time range (not including the current value).
My main issue is the time calculation. I don't know how to calculate it as I roll forward in time and I continue to get more instances as we move forward. If we go 10 seconds without any new data point then there would be no output since. If we got one instance in the previous 10 seconds then the output would be that value. If we got 100 instances in the previous 10 seconds, I need to return the average of that 100 instances.
Again, I'd appreciate any help, hints, links. This is driving me crazy.
Try the following formula in cell C3:
=IFERROR(SUMIFS(B:B,A:A,"<"&A3,A:A,">="&A3-10)/COUNTIFS(A:A,"<"&A3,A:A,">="&A3-10),0)
SUMIFS will get the sum of all values for which the seconds are:
less than A3 (i.e. less than 2 in this case)
more or equal to A3-10 (i.e. above -8 in this case)
And this sum is divided by the number of lines found with the same criteria.
If now there is an error (more specifically when the COUNTIFS returns 0, you would get #DIV/0!) you simply get 0 instead of the error.

Rounding Up Minutes above 8, 23, 38, 53 to the nearest quarter hour

Here’s a challenge for someone. I’m trying to round session times up to the nearest quarter hour (I report my total client hours for license credentialing)
8 minutes or above: round up to 15
23 minutes or above: round up to 30
38 minutes or above: round up to 45
53 minutes or above: round up to 60
Ex: in the first quarter hour, minutes below 8 will be their exact value: 1=1, 2=2, 3=3.
When 8 is entered, it is automatically rounded up to 15 (the same holds true for the rest of the hour: ex: 16=16, 17=17, 18=18, 19=19, 20=20, 21=21, 22=22. But 23 through 29 are all rounded up to 30.
Ideally, I could enter both hours and minutes in a single column, ex: 1.54
However, I realize that it may be necessary to create a separate column for hours and minutes in order to make this work (i.e., so that my formula is only concerned with rounding up minutes. I can add my hours and minutes together after the minutes are rounded.) Thus:
Column A = Hours (3 hours maximum)
Column B = Minutes
Column C = Minutes Rounded up to nearest ¼ hour
Column D = Col A + Col C
In column B I would like to enter minutes as 1 through 60 (no decimal- i.e., in General, not Time format)
38 minutes in column B would automatically be rounded up to 45 minutes in column C
Does anyone have any ideas? How can I do this using the fewest number of columns?
[A Previously posted question - "Round up to nearest quarter" - introduces the concept of Math.Ceiling. Is this something I should use? I couldn't wrap my head around the answer).
With Grateful Thanks,
~ Jay
How's this go?
DECLARE #time DATETIME = '2014-03-19T09:59:00'
SELECT CASE
WHEN DATEPART(mi, #time) BETWEEN 8 AND 15 THEN DATEADD(mi, 15-DATEPART(mi, #time), #time)
WHEN DATEPART(mi, #time) BETWEEN 23 AND 30 THEN DATEADD(mi, 30-DATEPART(mi, #time), #time)
WHEN DATEPART(mi, #time) BETWEEN 38 AND 45 THEN DATEADD(mi, 45-DATEPART(mi, #time), #time)
WHEN DATEPART(mi, #time) BETWEEN 53 AND 59 THEN DATEADD(mi, 60-DATEPART(mi, #time), #time)
ELSE #time
END
Assume "sessions" is your table (CTE below contains 2 sample records), with session start time & end time stored (as noted in comments above, just store these data points, don't store the calculated values). You might be able to do the rounding as below. (not sure if this is what you want, since it either rounds up or down... do you not want to round down?)
;WITH sessions AS (
SELECT CAST('20140317 12:00' AS DATETIME) AS session_start, CAST('20140317 12:38' AS DATETIME) AS session_end
UNION ALL
SELECT CAST('20140317 12:00' AS DATETIME), CAST('20140317 12:37:59' AS DATETIME) AS session_end
)
SELECT *, DATEDIFF(MINUTE, session_start, session_end) AS session_time
, ROUND(DATEDIFF(MINUTE, session_start, session_end)/15.0, 0) * 15.0 AS bill_time
FROM sessions;
EDIT:
Hi Jay, I don't think you mentioned it is an Excel problem! I was assuming SQL. As Stuart suggested in a comment above, it would be helpful if you modified your question to indicate it is for Excel, so that others can possibly get help from this dialog in the future.
With Excel, you can do it with two columns that contain the session start date and time (column A) and session end date and time (column B), plus two formulas:
Column C (Actual Minutes) = ROUND((B1-A1) * 1440,0)
Column D (Billing Minutes) = (FLOOR(C1/15, 1) * 15) + IF(MOD(C1,15) >= 8, 15, MOD(C1,15))
This is what my table looks like:
3/18/2014 12:00 3/18/2014 12:38 38 45
3/18/2014 14:00 3/18/2014 14:37 37 37

Resources