Your conditions do not exclude a string like A1234567 (1 capital letter, 7 digits). According to your conditions and assuming your string is in cell A1, this formula should work:
=AND(OR(LEN(A1)=7,LEN(A1)=8),OR(IFERROR(LEFT(A1,1)*1,0)=0,AND(IFERROR(LEFT(A1,1)*1,0)=0,IFERROR(LEFT(A1,2)*1,0)=0)),UNICODE(A1)=UNICODE(UPPER(A1)),UNICODE(MID(A1,2,1))=UNICODE(UPPER(MID(A1,2,1))),IFERROR(MID(RIGHT(A1,6),1,1)*1,0),IFERROR(MID(RIGHT(A1,6),2,1)*1,0),IFERROR(MID(RIGHT(A1,6),3,1)*1,0),IFERROR(MID(RIGHT(A1,6),4,1)*1,0),IFERROR(MID(RIGHT(A1,6),5,1)*1,0),IFERROR(MID(RIGHT(A1,6),6,1)*1,0))
It's basically an AND function that contains:
- a condition to check for the lenght of the string:
OR(LEN(A1)=7,LEN(A1)=8)
- a condition to check if first 2 characters of the string are letters (only the first or both):
OR(IFERROR(LEFT(A1,1)*1,0)=0,AND(IFERROR(LEFT(A1,1)*1,0)=0,IFERROR(LEFT(A1,2)*1,0)=0))
- a condition to check if the first character is capital:
UNICODE(A1)=UNICODE(UPPER(A1))
- a condition to check if the second character is capital:
UNICODE(MID(A1,2,1))=UNICODE(UPPER(MID(A1,2,1)))
- a condition for each last 6 characters to check if they are numeric (example refers to the first one):
IFERROR(MID(RIGHT(A1,6),1,1)*1,0)
EDIT: Improvements
The formula can be improved like this:
=AND(OR(LEN(A1)=7,LEN(A1)=8),OR(IFERROR(LEFT(A1,1)*1,0)=0,AND(IFERROR(LEFT(A1,1)*1,0)=0,IFERROR(LEFT(A1,2)*1,0)=0)),EXACT(LEFT(A1,2),UPPER(LEFT(A1,2))),ISNUMBER(RIGHT(A1,6)*1))
It's still an AND function. This the changes:
- it contains a single condition to check if the first 2 characters are capital (previously there were 1 for each character that used the UNICODE function):
EXACT(LEFT(A1,2),UPPER(LEFT(A1,2)))
[CREDIT: JvdV]
- it contains a single condition for the last 6 characters to check if they are numeric (previously there were 1 for each character that used the IFERROR function):
ISNUMBER(RIGHT(A1,6)*1)
EDIT: correction
In order to exclude special character, i've edited the formula:
=AND(OR(LEN(A1)=7,LEN(A1)=8),OR(AND(UNICODE(A1)>64,UNICODE(A1)<91,ISNUMBER(MID(A1,2,1)*1)),AND(UNICODE(A1)>64,UNICODE(A1)<91,UNICODE(MID(A1,2,1))>64,UNICODE(MID(A1,2,1))<91)),EXACT(LEFT(A1,2),UPPER(LEFT(A1,2))),ISNUMBER(RIGHT(A1,6)*1))