AlexCEL
Meubilair
- Lid geworden
- 3 apr 2014
- Berichten
- 8.762
- Office versie
- Excel 365 NL Insider
Beste forumleden,
ik zoek een elegante formule om een CAS-nummer te controleren. Een CAS-nummer is een unieke numerieke identifier voor chemische stoffen (voor de geïnteresseerden: https://nl.wikipedia.org/wiki/CAS-nummer). CAS-nummers bestaan uit 9 of 10 cijfers, verdeeld over 3 groepjes gescheiden door een streepje. Een nummer eindigt altijd met één cijfer: een checksum.
Zonder de streepjes ziet het nummer eruit als: (N9)N8N7N6N5N4N3N2N1R.
N9 komt erbij als het 10-cijferig nummer betreft.
De R is de rest, die wordt bepaald door de volgende formule gedeeld door 10: N1 + 2×N2 + 3×N3 + 4×N4 + 5×N5 + 6×N6 + 7×N7 + 8×N8 (+ 9×N9)
Voorbeelden:
64-17-5 (ethanol) → (1x7)+(2x1)+(3x4)+(4x6)=45 ... 45/10 geeft als rest 5. Dit nummer klopt dus.
7782-44-7 (zuurstof) → (1x4)+(2x4)+(3x2)+(4x8)+(5x7)+(6x7)=127 ... 127/10 geeft als rest 7. Ook ok.
5555-32-2 ("fantasiestof") → (1x2)+(2x3)+(3x5)+(4x5)+(5x5)+(6x5)=98 … 98/10 geeft als rest 8. Nummer is dus niet ok.
2041311-92-4 (nieuwste CAS-nummer) → (1x2)+(2x9)+(3x1)+(4x1)+(5x3)+(6x1)+(7x4)+(8x0)+(9x2)=94 ... 94/10 geeft als rest 4. Nummer is ok.
etc.
Ik zoek nu dus:
1) een formule die een CAS-nummer van rechts naar links kan lezen, en elk afzonderlijk cijfer hieruit met een oplopend cijfer vermenigvuldigd.
2) dat flexibel om kan gaan met variabele lengte van CAS-nummers;
3) die ik in Voorwaardelijke Opmaak kan gebruiken om een cel rood te kleuren als iemand een verkeerd CAS-nummer ingeeft.
Punt 1 en 2 lukt mij vermoedelijk wel, maar vooral de laatste voorwaarde is complicerend....
Zie ook bijgevoegd voorbeeldje.
ik zoek een elegante formule om een CAS-nummer te controleren. Een CAS-nummer is een unieke numerieke identifier voor chemische stoffen (voor de geïnteresseerden: https://nl.wikipedia.org/wiki/CAS-nummer). CAS-nummers bestaan uit 9 of 10 cijfers, verdeeld over 3 groepjes gescheiden door een streepje. Een nummer eindigt altijd met één cijfer: een checksum.
Zonder de streepjes ziet het nummer eruit als: (N9)N8N7N6N5N4N3N2N1R.
N9 komt erbij als het 10-cijferig nummer betreft.
De R is de rest, die wordt bepaald door de volgende formule gedeeld door 10: N1 + 2×N2 + 3×N3 + 4×N4 + 5×N5 + 6×N6 + 7×N7 + 8×N8 (+ 9×N9)
Voorbeelden:
64-17-5 (ethanol) → (1x7)+(2x1)+(3x4)+(4x6)=45 ... 45/10 geeft als rest 5. Dit nummer klopt dus.
7782-44-7 (zuurstof) → (1x4)+(2x4)+(3x2)+(4x8)+(5x7)+(6x7)=127 ... 127/10 geeft als rest 7. Ook ok.
5555-32-2 ("fantasiestof") → (1x2)+(2x3)+(3x5)+(4x5)+(5x5)+(6x5)=98 … 98/10 geeft als rest 8. Nummer is dus niet ok.
2041311-92-4 (nieuwste CAS-nummer) → (1x2)+(2x9)+(3x1)+(4x1)+(5x3)+(6x1)+(7x4)+(8x0)+(9x2)=94 ... 94/10 geeft als rest 4. Nummer is ok.
etc.
Ik zoek nu dus:
1) een formule die een CAS-nummer van rechts naar links kan lezen, en elk afzonderlijk cijfer hieruit met een oplopend cijfer vermenigvuldigd.
2) dat flexibel om kan gaan met variabele lengte van CAS-nummers;
3) die ik in Voorwaardelijke Opmaak kan gebruiken om een cel rood te kleuren als iemand een verkeerd CAS-nummer ingeeft.
Punt 1 en 2 lukt mij vermoedelijk wel, maar vooral de laatste voorwaarde is complicerend....
Zie ook bijgevoegd voorbeeldje.
Bijlagen
Laatst bewerkt: