Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Date Formula: Last business day - 2 of prior month

Posted on 2016-10-19
17
Medium Priority
?
113 Views
Last Modified: 2017-04-19
So I need two date formulas:

1. Calculate the third to last business day of the month (last business day - 2) of the PRIOR month.
2. Calculate the third to last business day of the month (last business day - 2) of the CURRENT month.
0
Comment
Question by:IO_Dork
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 8
  • 8
17 Comments
 
LVL 101

Expert Comment

by:mlmcc
ID: 41850746
Last Month
DateSerial(Year(CurrentDate), Month(CurrentDate), -2)

Open in new window


CurrentMonth
DateSerial(Year(CurrentDate), Month(CurrentDate)+1, -2)

Open in new window


mlmcc
0
 

Author Comment

by:IO_Dork
ID: 41850750
but does that handle just business days? or just any calendar day? Needs to calculate based on business days only.
0
 
LVL 101

Expert Comment

by:mlmcc
ID: 41851105
That is just calendar days.

I'll work on it for business days

mlmcc
0
New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

 
LVL 35

Expert Comment

by:James0628
ID: 41851780
Is "business days" just Mon - Fri, or something else?  Are holidays a factor?

 Since you didn't specify, I'm guessing that it's just Mon - Fri, but I thought I'd check.

 James
0
 

Author Comment

by:IO_Dork
ID: 41851941
Correct, Just mon - fri.
0
 
LVL 101

Expert Comment

by:mlmcc
ID: 41851943
DO you have the last day of the month available or do you need to calculate that?

mlmcc
0
 

Author Comment

by:IO_Dork
ID: 41852024
Need to calculate that
0
 
LVL 101

Expert Comment

by:mlmcc
ID: 41852070
Here is the basic formula for 3rd workday

WhilePrintingRecords;
If DayofWeek({Sheet2_.End Of Month}) in [1,2,3] then
    {Sheet2_.End Of Month} - 4
Else if DayofWeek({Sheet2_.End Of Month}) = 7 then
    {Sheet2_.End Of Month} - 3
Else
    {Sheet2_.End Of Month} - 2

Open in new window


mlmcc
0
 
LVL 101

Accepted Solution

by:
mlmcc earned 2000 total points
ID: 41852086
Updated to calculate last day of month based on current date

Name - Last Day Of Current Month
WhilePrintingRecords;
Local DateVar LastDay;
LastDay := DateSerial(Year(CurrentDate), Month(CurrentDate) + 1, 0);
If DayofWeek(LastDay ) in [1,2,3] then
   LastDay  - 4
Else if DayofWeek(LastDay ) = 7 then
    LastDay - 3
Else
    LastDay  - 2

Open in new window


Name - Last Day Of PreviousMonth
WhilePrintingRecords;
Local DateVar LastDay;
LastDay := DateSerial(Year(CurrentDate), Month(CurrentDate), 0);
If DayofWeek(LastDay ) in [1,2,3] then
    LastDay  - 4
Else if DayofWeek(LastDay ) = 7 then
    LastDay  - 3
Else
   LastDay  - 2

Open in new window


mlmcc
0
 

Author Comment

by:IO_Dork
ID: 41852179
mlmcc:

So I am trying to reference this field in another formula field and I get the following error...will it not be possible to reference the result of this formula field? Ultimately, I need to reference this field to conditionally sum a different field.

screenshot.png
0
 
LVL 101

Assisted Solution

by:mlmcc
mlmcc earned 2000 total points
ID: 41852217
Take the WhilePrintingRecords line out of the formulas

mlmcc
0
 

Author Closing Comment

by:IO_Dork
ID: 41852548
thanks, works perfectly!
0
 

Author Comment

by:IO_Dork
ID: 42097670
ok, so its been a few months since I accepted this solution, but now it does not seem to be working. I ran a report that brought back December 2016 records and the formulas were supposed to calculate the third to last business day of the current month and third to last day of prior month.

December 2016 should have been 12/27 because the last business day was 12/30  - but the formula returns 12/28.

November 2016 should have been 11/25 b/c the last business day was 11/30 and there was weekend in between - but formula returns 11/28.
0
 
LVL 101

Expert Comment

by:mlmcc
ID: 42097742
How are you figuring the dates?

By your definition above it is working

Dec 2016 - Last working day is 30 Dec 2016 - 2 days is 28 Dec 2016
Same for November.  Last working day is a Wednesday so 30 Nov 2016 - 2 is 28 Nov 2016
0
 

Author Comment

by:IO_Dork
ID: 42097790
right, I guess I mean 4 days before end of month....i was thinking 3 b/c take 12/27 and add 3days. so what part or parts of the formula should I change to return the 4th to last business day?
0
 
LVL 101

Expert Comment

by:mlmcc
ID: 42097827
Try this

WhilePrintingRecords;
Local DateVar LastDay;
LastDay := DateSerial(Year(CurrentDate), Month(CurrentDate), 0);
If DayofWeek(LastDay ) in [1,2,3,4] then
    LastDay  - 5
Else if DayofWeek(LastDay ) = 7 then
    LastDay  - 4
Else
   LastDay  - 3

Open in new window

1
 

Author Comment

by:IO_Dork
ID: 42099411
Thanks, those are the changes I figured would have to be done, but wasn't sure.
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I hate sub reports and always consider them the last resort in any reporting solution.  The negative effect on performance and maintainability is just not worth the easy ride they give the report writer.  Nine times out of ten reporting requirements…
There have always been a lot of questions related to when Crystal Reports evaluates report components (such as formulas, summaries, cross-tabs, charts, to name a few examples). Crystal Reports uses a two-pass reporting process to provide greater …
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…

670 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question