I created a table called Table1 based on your data. Then I created a form called AskYear with a textbox in it called ReportYear and I typed the year number into the textbox. I added two other textboxes called BOY (beginning of year) whose controlsource is =DateSerial([ReportYear],1,1) and EOY (end of year) whose controlsource is =DateSerial([ReportYear],12,31)<br><br>To see the solution, go to the SQL view of a new query and paste the following in then switch to design view :<br><br>SELECT IIf([StartDate]<[Forms]![AskYear]![BOY],[Forms]![AskYear]![BOY],[StartDate]) AS CalcStart, IIf([EndDate]>[Forms]![AskYear]![EOY],[Forms]![AskYear]![EOY],[EndDate]) AS CalcEnd, 1+DateDiff("m",[CalcStart],[CalcEnd]) AS Months<br>FROM Table1<br>WHERE (((Table1.StartDate) Between [Forms]![AskYear]![BOY] And [Forms]![AskYear]![EOY])) OR (((Table1.EndDate) Between [Forms]![AskYear]![BOY] And [Forms]![AskYear]![EOY]));<br><br>If either [StartDate] or [EndDate] in your table falls between BOY or EOY on the form, then that row should be included in the results. The number of months for a row can't be greater than 12. To calculate it, I use the iif function to set the beginning and end dates to be subtracted. If [StartDate] is earlier than [BOY], then I use [BOY] as my starting point. If [EndDate] is later than [EOY], then I use [EOY] as my ending point. I use the DateDiff function to calculate the number of months between the two dates and then I add one (this is because of the way you chose to enter data).<br><br>I assume you can do the rest of the calculation on your own. Hope this helps.