I am Calculating Over Time of the employees in time format cell using Microsoft Excel 2007. In my result, its calculated as hh and mm. But I want only Hours and ignore Min.
Eg : I have to get this result of SANIA SARWER 0.18 as 0.0
See the screenshot below.
=SUMPRODUCT(Int(24*$B:$B),--($A:$A=D2))
How does it work?
Well, SUMPRODUCT will go through each item and multiply them together (So SUMPRODUCT(A1:A3,B1:B3) is the same as =(A1*B1)+(A2*B2)+(A3*B3)) - now, let's looks at each of the columns we're multiplying.
INT(24*$B:$B) is just Days, converted to Hours, and trim off the decimal part (minutes/seconds) - fairly simple.
--($A:$A=D2) first checks if the value in column A is the same as in D2 and gives TRUE or FALSE. The -- then converts this into 1 or 0, which we multiply by the hours before adding them all up.
Easiest way would be to Round Down the data using ROUND function, and then use SUM function to add the rounding data up.
You can find a simple example below.
Related
I have the list of data that showing the Hours and the Minutes that I extract from the system. I need to be extract the hours.
As example below, column B first row, the Hours would be 64 and the minutes would be 46.
But when I used the formula =Hour , its turn up the different value since its actually decimal number.
Cannot use left() , it will give the actual decimal number.
Updated:
We tried the #harun24HR 's but cannot readable the value.
But if you noticed, if i copy and paste the value is different. thats why the search not applicable.
4th Update:
To Solar Mike, I have tried the formula given from the thread the i think the value not readable
It's a time value which Excel stores as calculated value based on 24 hours = 1.
To retrieve the hours only you can use:
=INT(A2*24)
To retrieve the minutes only you can use:
=(A1-(INT(A1*24)/24))*24*60
Your time value is already a number in time format so you just need it to change it to decimal system. Dates and time values are numbers. Even if you see it as 30/09/2019 or 12:00:00, actually, for Excel, both cases are numbers.
First date Excel can recognize properly is 01/01/1900 which integer numeric value is 1. Number 2 would be 02/01/1900 and so on. Actually, today is 44659.
Now, about your data, you posted this screenshoot:
So the value is numeric, not text/string. In Excel, what you see is not always what you have. Probably that column has been formatted using custom mask. My fake data is like this:
The numeric value is 02/01/1900 16:46:36 (or 02/01/1900 4:46:36 PM it depends on your regional settings) but I've applied a custom format like this:
[hh]" hours" mm " minutes"
So what I have is a number but what I see is a text!
We have to work with the number (to be honest, ist's easier to work with numbers), so to extract the total hours, minutes and seconds.
Formula in B1: =INT(A1*24) total hours
Formula in C1: =INT(A1*24*60-B1*60) total minutes
Formula in D1: =A1*24*60*60-B1*60*60-C1*60 total seconds
This should guide you on whatever are you trying to achieve.
From your current sample data you try-
For hour =LEFT(A2,SEARCH(" ",A2)-1)
For minutes =RIGHT(SUBSTITUTE(A2," minutes",""),2)
I'm trying to perform an AVERAGEIFS formula on some data, but there are 2 possible results and as far as I can tell AVERAGEIFS doesn't deal with that situation.
I basically want to have an ELSE inside it.
At the moment I have 2 ranges of data:
The first column only contains values 'M-T' and 'F' (Mon-Thurs and Fri).
The second column contains a time.
The times on the rows with an 'F' value in column 1 are an hour behind the rest.
I want to take an average of all the times, adjusting for the hour delay on Fridays.
So for example I want it to take an average of all the times, but subtract 1 hour from the values which are in a row with an 'F' value in it.
The way I've been doing it so far is by having 2 separate results for each day, then averaging them again for a final one:
=AVERAGEIFS(G3:G172, B3:B172, "M-T")
=AVERAGEIFS(G3:G172, B3:B172, "F")
I want to combine this into just one result.
The closest I can get is the following:
=AVERAGE(IF(B3:B172="M-T",G3:G172,((G3:G172)-1/24)))
But this doesn't produce the correct result.
Any advice?
Try this
=(SUMPRODUCT(G3:G172)-(COUNTIF(B3:B172,"=F")/24))/COUNTIF(B3:B172,"<>""""")
EDIT
Explaining various steps in the formula as per sample data in the snapshot.
SUMPRODUCT(G3:G17) sums up all the value from G3 to G17. It gives a
value of 4.635416667. This after formatting to [h]:mm gives a value
of 111.15
OP desires that Friday time be one hour less. So I have kept one hour less for Friday's in the sample data. Similar SUMPRODUCT on H3:H17 leads to a value of 4.510416667. This after formatting to [h]:mm gives a value
of 108.15. Which is exactly three hours less for three occurrences of Fridays in the sample data.
=COUNTIF(B3:B17,"=F") counts the occurrences of Friday's in the B3:B17 range which are 3 occurrences.Hence 3 hours have to less. These hours are to be represented in terms of 24 hours hence the Function COUNTIF() value is divided by 24. This gives 0.125. Same is the difference of 4.635416667 and 4.510416667 i.e. 0.125
Demonstration column H is for illustrative purposes only. Infact Friday accounted values that is 108.15 in sample data has to be divided by total data points to get the AVERAGE. The occurrences of data points are calculated by =COUNTIF(B3:B17,"<>""""") with a check for empty columns.
Thus 108:15 divided by 15 data points give 7:13 in the answer.
Revised EDIT Based upon suggestions by #Tom Sharpe
#TomSharpe has been kind enough to point the shortcomings in the method proposed by me. COUNTIF(B3:B172,"<>""""") gives too many values and is not advised. Instead of it COUNTA(B3:B172) or COUNT(G3:G172) are preferable. Better Formula to get AVERAGE as per his suggestion gives very accurate results and is revised to:
=AVERAGE(IF(B3:B172="M-T",G3:G172,((G3:G172)-1/24)))
This is an Array Formula. It has to be entered with CSE and further cell to be formatted as time.
If your column of M-T and F is named Day and your column of times is named TIME then:
=SUMPRODUCT(((Day="M-T")*TIME + (Day="F")*(TIME-1/24)))/COUNT(TIME)
One simple solution would be to create a separate column that maps the time column and performs the adjustment there. Then average this new column.
Is that an option?
Ended up just combining the two averageifs. No idea why I didn't just do that from the start:
=((AVERAGEIFS(G$3:G171, $B$3:$B171, "F")-1/24)+AVERAGEIFS(G$3:G171, $B$3:$B171, "M-T"))/2
I have two columns with datetime values in this format dd/mm/yyyy hh:mm:ss.How do i calculate the difference between two columns in minutes and show a value if it exceeds certain minutes. For example if the difference of column B - A is less than 5 minutes, than it should show 'ok' else it should show 'fail'. Example
A B C
8/5/2015 3:25:00 PM 8/5/2015 3:35:00 PM Fail
All that is needed is this formula:
=IF((B1-A1)*1440<5,"OK","Fail")
(B1-A1)*1440 returns the number of minutes difference.
We're assuming that the second time is greater than the first. (And also assuming the same time zone.)
You can use the Hour(), Minute() Day() and month() functions to create an amalgam formula - it doesn't seem particularly sensible to do with numbers alone using cell-INT(cell).
I will explain this with an example:
Let's say I have a flow value, like 2 liter per hour. And let's say I have a container that is 3 liter big.
If I use a formula to get how much time I need to fill the container, as result 1.5 that is One hour and Half.
Instead of 1.5, I need to have an HH:MM:SS format, that will convert "1.5" to "1:30" or "1h 30m". I have looked all around stackoverflow and google, but seems I am the only one on earth with this need.
There is a way to get this?
You can convert 1.5 to the time value 1:30 by dividing by 24, so you can do that in your initial formula, e.g. with flow = 2 in A2 and container size = 3 in B2 use
=B2/A2/24
custom format result cell as [h]:mm
I created a formula to convert a duration represented in hours as source.
It can display: [W]eeks, [D]ays, [h]ours, [m]inutes and [s]econds.
It works on Google Spreadsheet, but I think it should also work on Microsoft Office and Libreoffice Calc.
=CONCATENATE(IF(A1>=168,CONCATENATE(ROUNDDOWN(A1/168),"S "),""),IF(MOD(A1,168)>=24,CONCATENATE(ROUNDDOWN(MOD(A1,168)/24),"D "),""),IF(MOD(MOD(A1,168),24)>=1,CONCATENATE(ROUNDDOWN(MOD(MOD(A1,168),24)/1),"h "),""),IF(MOD(A1*60,60)>0,CONCATENATE(ROUNDDOWN(MOD(A1*60,60)),"m ","")),IF(MOD(A1*3600,3600)>0,CONCATENATE(ROUNDDOWN(MOD(MOD(A1*3600,3600),60)),"s","")))
Okay, so I have two cells:
Start End
11:31:37.644 11:31:51.269
I'd like to subtract the two and return the remaining time which should equal something around 14 seconds.
Edit for more information:
My values I'm inputting are like so:
113137.644
113151.269
and I have a custom formatter set to: 00\:00\:00.000 to display what you see at the very top.
It would be better if you could input the values as real time values then you can just use a simple subtraction
=A2-A1
...but with the values as they are you can do a conversion and subtraction all in one using TEXT function, e.g. in A3 use this formula
=TEXT(A2,"00\:00\:00.000")-TEXT(A1,"00\:00\:00.000")
format A3 as [h]:mm:ss.000 to get 0:00:13.625 for your example
Assumes times are on the same "day", if you need to pass midnight you can revise formula to
=MOD(TEXT(A2,"00\:00\:00.000")-TEXT(A1,"00\:00\:00.000"),1)
You need to use the MID function to grab each section of the time, like this:
=MID(A1,1,2)&":"&MID(A1,3,2)&":"&MID(A1,5,2)&"."&MID(A1,8,3)
This will change 113137.644 to 11:31:37.644.
You can then do the math on it like this (all in one cell, but broken up here for readability):
=TEXT(MID(B1,1,2)&":"&MID(B1,3,2)&":"&MID(B1,5,2)&"."&MID(B1,8,3), "hh:mm:ss.000")
-
TEXT(MID(A1,1,2)&":"&MID(A1,3,2)&":"&MID(A1,5,2)&"."&MID(A1,8,3),"hh:mm:ss.000")
That should give you 0.000157697. Change the field's custom format to hh:mm:ss.000 to give you 00:00:13.625.
You can use this formula to convert your values to time
=(LEFT(A1,2)+(MID(A1,3,2)+RIGHT(A1,LEN(A1)-4)/60)/60)/24
You can then subtract and convert back using the following formula
=TEXT(B1,"hhmm")&TEXT(MOD(B1*24*60,1)*60,"00.000")
But it would probably be better for you to actually use proper decimal values in fractions of days or hours rather than this you can't calculate anything with.