Já nyní mám od pátku "funkční" tento vzorec, kontroluje SPZ i novou syntaxi kódu zakázek.
=KDYŽ(TYP(A2)=2;KDYŽ(NEBO(GETYEAR(A2)="";TYP(HODNOTA(ČÁST(A2;1;1)))=16;TYP(HODNOTA(ČÁST(A2;2;1)))=16;TYP(HODNOTA(ČÁST(A2;2;1)))=16);"NENÍ ROK";GETYEAR(A2));KDYŽ(A(HODNOTA(ČÁST(A2;1;9))>=150001011;HODNOTA(ČÁST(A2;1;9))<=359999999);20&ČÁST(A2;1;2);KDYŽ(GETYEAR(A2)="";"NENÍ ROK";GETYEAR(A2))))
a funkce GETYEAR je:
Function GETYEAR(T As String) As Variant
Dim i As Byte, Y As Variant
GETYEAR = vbNullString
If Len(T) >= 4 Then
For i = 0 To Len(T) - 4
Y = Mid(T, Len(T) - 4 - i + 1, 4)
If IsNumeric(Y) And Y > 1900 And Y < 2100 Then GETYEAR = Y: Exit Function
Next i
End If
End Function
Musel jsem totiž ještě reagovat na nový zápis kódu zakázek.
Nyní má zápis tuto syntaxi:
15 0001 011 je to bez mezer
15 - rok (2015; já to mám omezené intervalem jen do roku 2035)
0001 - čtyřmístné pořadové číslo zakázky v daném roce (může nabývat hodnot 0001 až 9999)
011 - třímístné číslo (kód výrobního úseku; může nabývat hodnoty 011 až 999)
Řešil jsem to asi složitě přes interval, ale nic jiného mě amatéra nenapadlo
citovat