Formula in a Query in the Feild

gheyman

Well-known Member
In design mode you can enter a column and make it a formula (example: MONTH1_PD: IIf([PDIR Completed] Is Null,DateDiff("d",[PDIR Due Date],Now()),"") This is just an example

I'm need a rather complex formula

I need a formula that says IIF [PDIR Completed] >= [PDIR Due Date], "1","0" But that's the easy part, what I need the formula to do first is check the date in the [PDIR Due Date] field. If its in the month 3 months earlier than today, then do the above. So if today is 9/13/2019, I want to check to see if the [PDIR Due Date] is in June (between 6/1/2019 and 6/30/2019. that's the part I am struggling with. Any help is appreciated

PS I don't want to put a date criteria in the query for [PDIR Due Date]. I need a Dynamic formula that I do not have to change the query criteria every month.

Thanks
 

Joe4

MrExcel MVP, Junior Admin
You should be able to nest an IIF statement to do the second (two IIF functions nexted within each other), and use DateDiff to get the difference in months.

See here for some explanations and examples for nested IIF:
http://www.simply-access.com/Nested_IIF_Statement.html
https://support.office.com/en-us/article/iif-function-32436ecf-c629-48a3-9900-647539c764e3

I'll let you take a crack at it, and seehow you do. It should be pretty straightforward.
Post back and let us know if you figure it out or still need help!
 

gheyman

Well-known Member
IIf statement to for the formula isn't difficult, its doing the first condition in the formula to see if the date is 3 months earlier (6/1/2019-6/30/2019) I thought maybe do some kind of EMonth(NOW,-4)+1 and Eomonth NOW(,3) but could get to a working formula
 

Joe4

MrExcel MVP, Junior Admin
Why can't you just do a DATEDIFF on those two dates, and see if the difference is 3 months?
If you choose months ("m") instead of days ("d"), you shouldn't need to worry about day of the month (as it will ignore days), i.e.
6/1/2019 - 9/30/2019
6/15/2019 - 9/30/2019
6/30/2019 - 9/1/2019
will all return 3.
 

gheyman

Well-known Member
I see, so use the Date Diff as my condition (Iff DatedDiff=3)

I was going a much longer route IIF(([PDIR Due Date]>DateSerial(Year(Now()-90),Month(Now()-90),1)) And ([PDIR Due Date]<DateSerial(Year(Now()-90),Month(Now()-90)+1,0)),1,0)
 

Joe4

MrExcel MVP, Junior Admin
I see, so use the Date Diff as my condition (Iff DatedDiff=3)

I was going a much longer route IIF(([PDIR Due Date]>DateSerial(Year(Now()-90),Month(Now()-90),1)) And ([PDIR Due Date]
Yep, no need to covercomplicate it!:)
 

Micron

Well-known Member
Don't forget that if expressions start getting real hairy, you can call a function from a calculated query field as well.
 

Some videos you may like

This Week's Hot Topics

Top