Count IF with Date and Time in single Cell (EXCEL) - excel

I have a spreadsheet that lists the date and time of an event in the same cell (mm/dd/yy h:mm). I need to find a way to count how many events took place between a certain time range in a Hourly Basis.
I could sum if the cell contains dates only however the cell contains with date which i am unable to get the values.
Basically, all datas are in cell A, so i need to count how many events happened at 6am, 7am , and so on... as on hourly basis.

Your column A looks like properly formatted date & time value, so its manipulation is easy. If it's not (ie, not date but text) you should first convert it to date value.
=DATE(MID(A2,7,4), MID(A2,4,2), LEFT(A2,2)) + TIME(MID(A2,12,2), MID(A2,15,2), RIGHT(A2,2))
Say this was C2. Now that column C is date & time, set $D$2 to date to query(ex 2017-03-26), E2 to start time(ex 6:00), and F2 to end time(ex 7:00), then you can count events from 6:00 to 7:00 like this:
=COUNTIFS(C:C,">="&($D$2+E2), C:C,"<"&($D$2+F2))
Sample file is here and its screenshot is below.

If the times spanned different dates and you still wanted to see how many events happened in a particular hour of the day, you would need an array-type formula, e.g. if the start time in hours (entered as a normal number) is in C2
=SUMPRODUCT(--(HOUR($A$2:$A$10)=C2))
or if the start hour is entered as a time
=SUMPRODUCT(--(HOUR($A$2:$A$10)=HOUR(C2)))

Related

SUMIFS Between Two Dates and Times in Excel

I am trying to get the summation of a column between two dates and two times, where the days are different.
The columns I have are:
Table 1 = Time1, Time2, Date1, Date2
Table 2 = Date, Time, Event
Ideally, this formula would give the total number of events between Date1/Time1 and Date2/Time2
I have tried the formula below, but am receiving the total number of events between those two times on both dates, instead of the number of events between the two.
Time Start Time End Date Start Date End
23:54:00 0:04:00 9/27/2021 9/28/2021
=SUMIFS(Sheet1!$G:$G,Sheet1!$D:$D,">="&'ProductMadness-Postlogs Export'!U84,Sheet1!$D:$D,"<="&'ProductMadness-Postlogs Export'!V84,,Sheet1!$C:$C,">="&'ProductMadness-Postlogs Export'!Y84,Sheet1!$C:$C,"<="&'ProductMadness-Postlogs Export'!Z84)
*For context, Sheet1 has the event data, "ProductMadness - Postlogs" has the date and time data
If I understand this correctly the following formula should be what you are looking for.
=SUMIFS(Sheet1!$G:$G,Sheet1!$D:$D,">"&'ProductMadness-Postlogs Export'!U84,Sheet1!$D:$D,"<"&'ProductMadness-Postlogs Export'!V84,Sheet1!$C:$C,">"&'ProductMadness-Postlogs Export'!Y84,Sheet1!$C:$C,"<"&'ProductMadness-Postlogs Export'!Z84)
By excluding the equal to it only counts what is between. That being said this still may not do what you want depending on if the times are just time values. For example, 23:54:00 is greater than 0:04:00. Since you were receiving results in the past, I am assuming your time have the full date value and are just formatted as time.

excel date time formula issue

I'm struggling to make a formula work in excel.
My case : I have data in m/d/yyyy h:mm AM/PM format on E col.
I have data that goes to the next day post midnight. I'm looking to create another column lets say F where I want to check for data between time 5:30pm to next day 5:30am and return date in m/d/yyyy(col F)
Example :
Let's say a job request came in at 3/21/2021 4:30am, I want it to return 3/20/2021 on col F (previous date)
This is required due to different timezone and unfortunately the timezone cannot be altered on the data.
If it's really true that your data are in "m/d/yyyy hh:mm PM format" then this formula will deduct 8 hours from the value found in E4 and return a true date.
=DATE(RIGHT(LEFT(E4,FIND(" ",E4)-1),4),LEFT(E4,FIND("/",E4)-1),MID(E4,FIND("/",E4)+1,1+ISERROR(FIND("/",MID(E4,LEFT(E4,FIND("/",E4)-1),2)))))+TIMEVALUE(MID(E4,10,10))-(8/24)
A "True" date is a number which takes its display format from the cell format you set, meaning the "data" are different from the display. A "Fake" date (my expression) is a text string that looks like a date but is unsuitable for calculations because it's not a number. The "data" underlying a fake date are identical to the display. My above formula spends 95% of its effort on converting the fake date into a true one and is likely to earn your comment that it "doesn't work" because it returns a number. If so, don't comment. Set the cell format to the kind of display you want.
Of course, if E4 has a true date the effort can be reduced and the formula you seek would be simply
=E4-(8/24)
This is because in Excel dates one day has a value of 1. Therefore 1 hour = 1/24 and 8 hours = 1/24*8 or 8/24. Change the number of hours as desired, add or subtract them from the original as needed.
BTW, if your original data are really text (fake dates) do consider converting them to true dates using the 95% part of my first formula and then processing them as true dates. As you see, there is no advantage in keeping fakes around.

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.

Check if any date within a range is within 1 month of todays date

I've got a column full of dates. How can I check that column to find which date is within a month of todays date, and then return it?
If there is no date within a month, just return blank
Lets say my dates are:
01-Jan-12
01-Apr-12
01-Jul-12
01-Oct-12
01-Jan-13
The code im using is below. A:A is the range of the dates above
=MIN(IF(A:A>TODAY(),A:A))
The issue im having is that if I use the above, it returns 01/01/12 and not 01/01/13. Also, if I change the dates so the next date is December 1st 2012, it still returns 01/01/12
So you really just want the earliest date if that's within a month? If so perhaps try
=IF(MIN(A:A)-TODAY()<=30,MIN(A:A),"")
Assumes dates in column A
If you have past and future dates try this formula
=IFERROR(SMALL(IF(A2:A100>=TODAY(),IF(A2:A100<=TODAY()+30,A2:A100)),1),"")
confirmed with CTRL+SHIFT+ENTER
or for exactly 1 month (rather than 30 days) try using EDATE, i.e.
=IFERROR(SMALL(IF(A2:A100>=TODAY(),IF(A2:A100<=EDATE(TODAY(),1),A2:A100)),1),"")

formula to minutes and seconds down into total amount in seconds

I am looking a formula for excel that minus a feild called end time by field start time and answer will show as the total amount of seconds the calls lasted.
For example i have call that ended 04:04:35 and started at 03:51:51 and i need to how many seconds that would be in total and instead of working by calucator would like to know if there fourmula to do it
thanks
simon
The easiest is to set the two cells as time (hh:mm:ss) then subtract them.
Put the result on a new cell, formatted as a number and multiply the result by 86400.
See this post for the explanation
EDIT: the final cell has to be in number format, something like this:
A B C
Cells 1 03:51:51 04:04:35 =(B1-A1)*86400
Cell format: hh:mm:ss hh:mm:ss number

Resources