条码校验位怎么算:EAN-13、UPC-A、EAN-8、ITF-14、SSCC 手算步骤与 Excel 公式
拿到 12 位厂商代码加商品码,最后那一位不是随便填的。EAN-13、UPC-A、EAN-8、ITF-14、SSCC 用的是同一个算法,会算一种就全会了;批量做几百个 SKU,一条 Excel 公式就够。
GS1 体系里的条码——零售的 EAN-13 / UPC-A、小包装的 EAN-8、外箱的 ITF-14、物流单元的 SSCC——最后一位都是校验位。它不携带信息,只用来让扫描枪判断前面的数字有没有读错:任何一位读错、两位相邻互换,重新算出的校验位就对不上,设备直接拒读。这也是为什么校验位算错的条码「怎么扫都扫不出」。
🏷️ 关键要点
- 只有一个算法:从右往左(不含校验位)按 3、1、3、1… 交替乘权重求和,校验位 = 把和补到 10 的整数倍需要加的数。
- 五种码制的区别只是位数:EAN-8 前 7 位、UPC-A 前 11 位、EAN-13 前 12 位、ITF-14 前 13 位、SSCC 前 17 位。
- Excel 一条公式:把不含校验位的数字放在 A1(设为文本格式),下面第三节的公式直接算;批量验证也有公式。
- 算好了别手输:在GS1 校验位计算器里算完直接复制,或者让条码生成器自动补——输 12 位它会自己算第 13 位。
一、算法:右起 3、1 交替加权
- 把不含校验位的数字从右往左编号,最右一位乘 3,往左依次乘 1、3、1、3……
- 把乘积全部加起来,得到和 S。
- 校验位 = (10 − S mod 10) mod 10。也就是:S 的个位是 0 就填 0,否则填「10 减个位」。
为什么是「从右往左」而不是从左往右?因为五种码制长度不同,从左数权重起点会变;从右数则永远是最右一位乘 3,一个规则通吃。很多教程写「EAN-13 奇数位乘 1、偶数位乘 3」,那只对 12 位输入成立,换成 UPC-A 就反了。
二、五种码制逐位示例
EAN-13(69 码):输入 12 位
前 12 位 690123456789:
6×1 + 9×3 + 0×1 + 1×3 + 2×1 + 3×3 + 4×1 + 5×3 + 6×1 + 7×3 + 8×1 + 9×3 = 128
128 的个位是 8,10 − 8 = 2,完整条码 6901234567892。
| 码制 | 输入位数 | 示例(不含校验位) | 校验位 | 完整编码 |
|---|---|---|---|---|
| EAN-8 | 7 | 9638507 | 4 | 96385074 |
| UPC-A | 11 | 03600029145 | 2 | 036000291452 |
| EAN-13 | 12 | 690123456789 | 2 | 6901234567892 |
| ITF-14 / GTIN-14 | 13 | 1690123456789 | 9 | 16901234567899 |
| SSCC | 17 | 36912345678901234 | 1 | 369123456789012341 |
注意 ITF-14 那行:它就是 EAN-13 的 12 位前面加一位包装指示符(1–8,表示几级包装),校验位要重新算,不是把 EAN-13 的校验位照抄过去——上表里 EAN-13 校验位是 2,加了指示符 1 之后变成 9。外箱码扫不出,这是最常见的原因之一。
三、Excel / WPS 公式
先把放数字的列设成文本格式(否则以 0 开头的 UPC 会被吃掉前导零,13 位以上会变成科学计数法)。以下公式假设不含校验位的数字在 A1,Excel 2010 以上和 WPS 表格都能用。
算校验位(按码制)
| 码制 | A1 位数 | 公式(算出校验位) |
|---|---|---|
| EAN-8 | 7 | =MOD(10-MOD(SUMPRODUCT(--MID(A1,ROW($1:$7),1),{{3;1;3;1;3;1;3}}),10),10) |
| UPC-A | 11 | =MOD(10-MOD(SUMPRODUCT(--MID(A1,ROW($1:$11),1),{{3;1;3;1;3;1;3;1;3;1;3}}),10),10) |
| EAN-13 | 12 | =MOD(10-MOD(SUMPRODUCT(--MID(A1,ROW($1:$12),1),{{1;3;1;3;1;3;1;3;1;3;1;3}}),10),10) |
| ITF-14 | 13 | =MOD(10-MOD(SUMPRODUCT(--MID(A1,ROW($1:$13),1),{{3;1;3;1;3;1;3;1;3;1;3;1;3}}),10),10) |
| SSCC | 17 | =MOD(10-MOD(SUMPRODUCT(--MID(A1,ROW($1:$17),1),{{3;1;3;1;3;1;3;1;3;1;3;1;3;1;3;1;3}}),10),10) |
拼出完整条码:=A1&B1(B1 是上面算出的校验位)。权重数组里的分号是「竖着排」,和 ROW() 返回的竖向数组对齐,别改成逗号。
任意长度通用公式(Excel 365 / 2021、WPS 新版)
=MOD(10-MOD(SUMPRODUCT(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),IF(MOD(LEN(A1)-ROW(INDIRECT("1:"&LEN(A1))),2)=0,3,1)),10),10)
不用管 A1 是几位,自动从右起 3、1 加权。旧版 Excel 里要按 Ctrl+Shift+Enter 作为数组公式输入。
批量验证已有的完整条码
供应商给了一列 13 位 EAN,想知道哪些是错的:完整码在 A1,
=IF(MOD(SUMPRODUCT(--MID(A1,ROW($1:$13),1),{1;3;1;3;1;3;1;3;1;3;1;3;1}),10)=0,"正确","校验位错误")
原理是把校验位也算进去,正确的条码加权和一定是 10 的整数倍。UPC-A 把 $1:$13 改成 $1:$12、数组改成 12 个(首位权重 3);ITF-14 改成 14 个(首位权重 1)。
四、校验位错了会怎样
- 扫描枪不响、不出数:多数手持枪和收银扫描器默认开启校验,校验失败直接丢弃,表现和「没扫到」一模一样。排查条码扫不出时,先用校验位计算器的「验证」模式核一下最后一位,比调打印机快。
- 条码生成器不肯生成或悄悄改了最后一位:合规的生成器会拒绝错误的 13 位输入,或者只收 12 位自动补位。本站条码生成器输 12 位自动算第 13 位;输 13 位会核对,最后一位不对会提示。
- 入驻平台审核不过:天猫、京东、亚马逊上传商品时都会校验 GTIN,校验位错误直接打回。
五、几个容易混的地方
- Code 128 不用这套:Code 128 的校验字符是 mod 103,由生成软件自动加、人眼看不到、不印在下方数字里。你不需要也不应该自己算。
- ISBN 是另一套:13 位 ISBN(978 开头)恰好也是 EAN-13,校验位算法相同;但 10 位旧 ISBN 是 mod 11,会出现 X。
- GTIN-14 前面补零不改校验位吗?改。GTIN-14 的校验位是按 13 位输入算的,把 EAN-13 前面补 0 变成 GTIN-14 时,因为权重从右起,前面补 0 乘任何权重都是 0,结果恰好不变;但换成 1–8 的包装指示符就一定变。
- SSCC 的扩展位:SSCC 第一位是扩展位(0–9 自定),也参与校验位计算,别漏。
参考资料
- GS1 — How to calculate a check digit manually(官方示例 4006381333931)
- GS1 General Specifications 7.9 — Standard check digit calculations
常见问题
EAN-13 条码的校验位怎么算?
取前 12 位,从右往左按 3、1、3、1 交替乘权重求和,再看和的个位:是 0 校验位就是 0,否则用 10 减去个位。例如 690123456789 的加权和是 128,校验位是 2,完整条码 6901234567892。
UPC-A、ITF-14、SSCC 的校验位算法和 EAN-13 一样吗?
完全一样,都是 GS1 的 mod-10 算法,从右往左 3、1 交替加权。区别只在输入位数:UPC-A 11 位、EAN-13 12 位、ITF-14 13 位、SSCC 17 位。ITF-14 加了包装指示符后校验位必须重新算,不能照抄 EAN-13 的。
Excel 里怎么批量算条码校验位?
把不含校验位的 12 位数字放在 A 列(文本格式),B1 输入 =MOD(10-MOD(SUMPRODUCT(--MID(A1,ROW($1:$12),1),{1;3;1;3;1;3;1;3;1;3;1;3}),10),10),向下填充即可;完整码用 =A1&B1 拼接。UPC-A 把范围改成 $1:$11、权重数组改成 11 个且首位为 3。
校验位算错的条码能扫出来吗?
基本扫不出。扫描枪默认会校验最后一位,不通过就丢弃,表现和没扫到一样;电商平台上传商品时也会校验 GTIN 并打回。条码扫不出时先用校验位计算器验证最后一位,再去查打印质量。
相关工具与文章
- GS1 校验位计算器——算校验位、验证整码,五种码制。
- 条码生成器——输 12 位自动补第 13 位并生成条码图。
- 批量条码生成——Excel 名单一次出几百张。
- EAN-13 申请与生成全流程——从 GS1 申请到印刷。
- 条码扫不出来的 12 个原因——校验位之外的排查。
文中参数为常见生产场景的经验值,具体设备与材料批次之间存在差异,批量生产前请先小样试打。需要工厂直接报价可在线询价,1 个工作日内回复。