En primer lugar, definamos que es un número de registro CAS (Chemical Abstracts Service), es una identificación compuesta por números para compuestos químicos, polímeros, secuencias biológicas, preparados y aleaciones.
El registro CAS no tiene valor por si mismo, sino que se asigna en orden secuencial y está formado por tres partes separadas entre sí mediante guiones. La primera parte es un valor numérico entre dos y siete dígitos, la segunda tiene dos dígitos y la tercera es un dígito de control. De tal forma que la estructura mínima será XX-XX-X y como máximo XXXXXXX-XX-X
Tener en cuenta la diferencia de tamaño para nuestra hoja de Excel es crucial para poder realizar correctamente la formula que nos ayudará a conseguir el dígito de control.
Este dígito se calcula de la siguiente forma: se multiplica el último dígito por 1, el anterior por 2, anterior por 3 y así sucesivamente y se suman todos los valores. Una vez obtenemos un valor final se calcula el resto de la división entre 10.
Por ejemplo, si queremos calcular el dígito de control del agua deberemos conocer que el número CAS de este elemento es el 7732-18 de tal forma que realizaremos el siguiente cálculo: 8*1 + 1*2 + 2*3 + 3*4 + 7*5 + 7*6 el resultado es 105 y el resto entre 10 sería 5. Con lo que el número CAS completo sería 7732-18-5
Hagamos la práctica con el valor 78-10 para conseguir el 0 deberemos utilizar la función EXTRAE y LARGO de la siguiente forma =EXTRAE(A1;LARGO(A1);1), para conseguir el 1 utilizaremos =EXTRAE(A1;LARGO(A1)-1;1), el siguiente valor saltándonos el guion sería =EXTRAE(A1;LARGO(A1)-3;1), el último valor como mínimo obligatorio sería =EXTRAE(A1;LARGO(A1)-4;1)
Si quisiéramos hacer el cálculo para después poder hacer la división la función sería la siguiente:
=EXTRAE(A1;LARGO(A1);1)*1+EXTRAE(A1;LARGO(A1)-1;1)*2
+EXTRAE(A1;LARGO(A1)-3;1)*3+EXTRAE(A1;LARGO(A1)-4;1)*4 y ahora para calcular el resto entre 10 simplemente deberíamos modificar la función da la siguiente forma:
=RESIDUO(EXTRAE(A1;LARGO(A1);1)*1+EXTRAE(A1;LARGO(A1)-1;1)*2
+EXTRAE(A1;LARGO(A1)-3;1)*3+EXTRAE(A1;LARGO(A1)-4;1)*4;10) añadiendo la función RESIDUO.
Ahora vendría la parte más complicada que sería para los casos en los que la primera parte del código se alarga más de dos caracteres y que puede llegar hasta 7. No podemos seguir haciendo la extracción de datos de la misma forma que estamos haciendo ahora restando LARGO(A1)-5 y demás, ya que si el valor que estamos intentando restar es superior al largo nos podría dar un error y no conseguiríamos el valor que deseamos.
Así que deberemos utilizar la función SI.ERROR para ver si el valor que deseamos extraer es un valor erróneo o no. En caso de que lo sea, lo podremos sustituir por un 0 y eso no afectará al cálculo que estamos realizando y si no fuera así, realizaríamos el cálculo sin problema.
La función SI.ERROR(EXTRAE(A1;LARGO(A1)-5;1);0) nos validaría si estamos intentando extraer un dígito que no existe, en ese caso lo cambiaríamos por un 0
Recuerda que a partir de la posición 6 a extraer puede ser un valor opcional con lo que deberíamos ir con mucho cuidado para cubrir todos los casos.
La función final cubriendo el caso que el primer valor tenga una extensión de 2 o una extensión de 7 será de la siguiente:
=RESIDUO(EXTRAE(A1;LARGO(A1);1)*1+EXTRAE(A1;LARGO(A1)-1;1)*2+EXTRAE(A1;LARGO(A1)-3;1)*3
+EXTRAE(A1;LARGO(A1)-4;1)*4+SI.ERROR(EXTRAE(A1;LARGO(A1)-5;1);0)*5
+SI.ERROR(EXTRAE(A1;LARGO(A1)-6;1);0)*6+SI.ERROR(EXTRAE(A1;LARGO(A1)-7;1);0)*7
+SI.ERROR(EXTRAE(A1;LARGO(A1)-8;1);0)*8+SI.ERROR(EXTRAE(A1;LARGO(A1)-9;1);0)*9
+SI.ERROR(EXTRAE(A1;LARGO(A1)-10;1);0)*10;10)
En cymitquimica, un Marketplace para la compra de productos para la investigación científica tienes un listado de productos CAS a consultar.
Deja una respuesta