集装箱号校验

集装箱存在唯一的编码,此编码用于海关登记等,是集装箱相关业务中最重要的一个标识符

编码规则如图所示:


集装箱编码

集装箱具体编码规则:

第一部分由4位英文字母组成。

(1)前三位代码为箱主代码,主要说明箱主、经营人,是集装箱所有人自己规定并向国际集装箱局(BureauInternational des Conteneurs)登记注册的

(2)第四位代码说明类型,通常以字母´U´表示常规集装箱,若为´J´表明该集装箱带有可拆卸设备,若为´Z´则表示带拖车和底盘车的集装箱。

第二部分由6位阿拉伯数字组成。

(1)中间六位称之为箱体注册码(Registration Code),或顺序号(Serial Number),是一个集装箱箱体持有的唯一标识。如果不够六位,那么就用0在前面补齐,比如一家箱主的第一个箱子,可能就是000001。

第三部分为校验码

(1)末尾一位单独的阿拉伯数字,是检验箱主代号和顺序号记录是否准确的依据,由前4位字母和6位数字经过校验规则运算得出。

校验码计算规则

根据校验规则,箱号的每个字母和数字都有一个运算的对应值。箱号的前10位代码中,数字的对应值为自身,即0到9,而字母A到Z对应数值为10到38,因11、22、33不能对11取模数,所以被除去。

计算方式如下:

第N位的箱号对应值再分别乘以2^(N-1) (N=1,2,3………10)。

例如:箱号为EISU9138027的集装箱,第1位代码为E,

它的代码值=代码的对应值×2^(1-1)=15×2^0=15×1=15。

类推第2位代码为I,

它的代码值=代码的对应值×2^(2-1)=19×2^1=19×2=38。

……

以此类推得到箱号前10位号码的代码值。将前10位的代码值累加,箱号EISU9138027的值=2845,取11的模后结果为7,即为这个箱号的第11位校验码。

简道云公式实现

1.如下图使用两张基础表


基础表单

2.数字英文对照表


英文数字对照

3.箱号验证

(1)集装箱号模拟员工录入箱号,设置成字符串


箱号验证表单

(2)校验码通过MAPX,MOD,LEFT,RIGHT等公式共同完成计算

MOD

(

SUM

(

VALUE(MAPX("last",LEFT(集装箱号,1),英文,数字))*1,

VALUE(MAPX("last",RIGHT(LEFT(集装箱号,2),1),英文,数字))*2,

VALUE(MAPX("last",RIGHT(LEFT(集装箱号,3),1),英文,数字))*4,

VALUE(MAPX("last",RIGHT(LEFT(集装箱号,4),1),英文,数字))*8,

VALUE(RIGHT(LEFT(集装箱号,5),1))*16,

VALUE(RIGHT(LEFT(集装箱号,6),1))*32,

VALUE(RIGHT(LEFT(集装箱号,7),1))*64,

VALUE(RIGHT(LEFT(集装箱号,8),1))*128,

VALUE(RIGHT(LEFT(集装箱号,9),1))*256,

VALUE(RIGHT(LEFT(集装箱号,10),1))*512,

),11

)

(3)校验输入的字符串是否符合规定,校验包括

字符长度校验

前4位大写校验

中6位数字校验

11位校验码校验

字符一致性校验

IF(

AND

(

LEN(集装箱号)==11,

UPPER(LEFT(集装箱号,4))==LEFT(集装箱号,4),

ISEMPTY(RIGHT(LEFT(集装箱号,10),6)/10)!=1,

第11位校验码==(RIGHT(集装箱号,1)),

CONCATENATE(LEFT(集装箱号,10),第11位校验码)==集装箱号,),

"校验通过","校验不通过"

)


校验结果

特殊情况与改进

在进行校验时发现,当根据前10位的数字进行取模时,若存在模为10的情况时,会导致校验不通过,这时需要对校验部分进行优化

优化方式如下图,去校验码的右侧一位进行校验


优化

你可能感兴趣的:(集装箱号校验)