以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]excel13位条码校验码函数转狐表表达式  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=81402)

--  作者:lidusan
--  发布时间:2016/2/26 19:23:00
--  [求助]excel13位条码校验码函数转狐表表达式
在网上搜到excel的13位条码校验函数=RIGHT(SUM(LEFT(A2,{0,1}+{1;3;5;7;9;11})*{9,7}))
和校验规则如下:
EAN-13码校验位计算方法 
代码位置序号是指包括校验码在内的,由右至左的顺序号(校验码的代码位置序号为1)。
校验码的计算步骤如下:
a.从代码位置序号2开始,所有偶数位的数字代码求和。
b.将步骤a的和乘以3。
c.从代码位置序号3开始,所有奇数位的数字代码求和。
d.将步骤b与步骤c的结果相加。
e.用大于或等于步骤d所得结果且为10最小整数倍的数减去步骤d所得结果,其差即为所求校验码的值。
实例分析:
商品条码标准版和缩短版的校验码计算方法相同。 
从代码位置序号2开始,所有偶数位的数字代码求和为a。 
将上步中的a乘以3为a。 
从代码位置序号3开始,所有奇数位的数字代码求和为b。 
将a和b相加为c。 
取c的个位数d。 
用10减去d即为校验位数值。 
例:234235654652的校验码的计算如下表: 
数据码 校验码 
代码位置序号 13 ;12 ;11 ;10; 9 ;8 ;7 ;6; 5; 4 ;3; 2 ;1 
数字码 2 3 4 2 3 5 6 5 4 6 5 2  
偶数位 3 + 2 + 5 + 5 + 6 + 2 
奇数位 2 + 4 + 3 + 5 + 4 + 5 
步骤1:3+2+5+5+6+2=23
步骤2:23*3=69
步骤3:2+4+3+5+4+5=23
步骤4:69+23=92
步骤5:10-2=8
步骤6:校验码为 8
13位条码为:2342356546528
求大师帮忙看看如何使用表达式校验条码正确性.谢谢!
[此贴子已经被作者于2016/2/26 19:32:33编辑过]

--  作者:lidusan
--  发布时间:2016/2/26 19:26:00
--  
为什么上传不了附件了?
--  作者:lidusan
--  发布时间:2016/2/26 19:34:00
--  
附上文件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:条码.zip


--  作者:Hyphen
--  发布时间:2016/2/27 9:26:00
--  
定长条码表达式可以这样计算

IIF(Len([条码])=13,(((Convert(SUBSTRING([条码],2,1),System.Int16)+Convert(SUBSTRING([条码],4,1),System.Int16)+Convert(SUBSTRING([条码],6,1),System.Int16)+Convert(SUBSTRING([条码],8,1),System.Int16)+Convert(SUBSTRING([条码],10,1),System.Int16)+Convert(SUBSTRING([条码],12,1),System.Int16))*3+(Convert(SUBSTRING([条码],1,1),System.Int16)+Convert(SUBSTRING([条码],3,1),System.Int16)+Convert(SUBSTRING([条码],5,1),System.Int16)+Convert(SUBSTRING([条码],7,1),System.Int16)+Convert(SUBSTRING([条码],9,1),System.Int16)+Convert(SUBSTRING([条码],11,1),System.Int16)))%10-10)*-1,(-1))

代码计算参考:

--  作者:lidusan
--  发布时间:2016/2/27 19:16:00
--  
谢谢,完美解决.