以文本方式查看主题 - 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 -- 附上文件
|
||||
-- 作者: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 -- 谢谢,完美解决. |