Link to home
Start Free TrialLog in
Avatar of Professor J
Professor J

asked on

Excel Data Validation Prompt Error If overlap

I have came up with the attached solution to check if for a specific person in column A, the dates are not overlap. i want a data validation triggered by formula that if for an individual the user puts overlapped date then it gives a error warning with message overlap dates are not allowed.

see the attached file.
overlap.xlsx
Avatar of Rob Henson
Rob Henson
Flag of United Kingdom of Great Britain and Northern Ireland image

Assuming your entries are going to be in date order, you can set the date validation for each entry based on the maximum value of all items above.

For example the validation for B4 would be:

Min Date:  =MAX($B$2:$C3)+1
Max Date:  =31/12/9999 (or some other max date)

You then set the error messages as required.

When copied down the range to check for the MAX should adjust.

Thanks
Rob H
Avatar of Professor J
Professor J

ASKER

thanks Rob.

i have two issue,  A)  the dates will not be always in order.  B)  the names in column A will not always be James.
it would be different names and what i am looking for is, that if the validation would be also trigger the name as a condtion. for example the date for Mike shall not be checked against dates of James. so only validation sperately for each indivitual in column A.

i hope this is not something very tricky and impossible to achieve.
I think that will be difficult but don't think it would be impossible.

Might be worth putting into words what the equivalent manual check would be and then see if a logic statement can be derived from it.

Thanks
Rob H
Use this for B3
=MAX(IF($A$2:A2=A3,$B$2:B2,0))+1
Ejgil,  unfortunately, it did not work.
Logic, I think:

Start Date - Greater than previous finish dates or where less than previous finish dates is also less than the next start date. (i.e. it slots between the finish of one and the start of another)
Finish Date - less than subsequent start dates or greater than all start dates, which by default includes the current entry start date.

Would be a lot easier if the entries were in chronological order.
For the "MAX(IF(...))" formula on a worksheet, I believe it would have to be entered as an array formula (Ctrl + Shift + Enter). Don't know if you can do the same within a Data Validation formula.

Thanks
Rob H
i found something in the get-digital-help Oscar's page.  attached. it seems to work, the only problem is that how do i incorporate the condition of column A  names.
Prevent-users-from-entering-overlapping-
It is an array formula, and it has to be used in the data validation in B3 as Min value.
Then it works.
Since it is Max then the order of the dates does not matter.
thanks Ejgil, but see now the attached file.  

highlighted in yellow.  the validation do not take into consideration if the column C end date is greater then COlumn B

see example highlighted for James
overlap--1-.xlsx
ASKER CERTIFIED SOLUTION
Avatar of Ejgil Hedegaard
Ejgil Hedegaard
Flag of Denmark image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Just re-thinking the logic:

For the entered start date:
Check that the date falls between two previous finish dates or is later than the last finish date.
Where that date falls between two finish dates the date entered has to be less than the start date related to the later of the two finish dates.

So we need formulae that extract 2 or 3 dates:
1) The latest Finish Date which is prior to the entered date
2) The earliest Finish Date which is later than the entered date
3) The start date related to no 2, in other words the earliest start date which is later than the entered date.

The entered start date has to be later than no 1 and prior to no 3.

For the entered finish date:
The entered date also has to be later than no 1 and prior to no 3 as well as being later that the entered start date.

As well as matching for the person!!!
Hi Rob,

apparently, the solution provided Ejgil Hedegaard worked.  do you think there is better way to do this? if yes, i can open another question.

thanks.