Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2674|回复: 4

[已解决]按规则求条形码最后一位数字。

[复制链接]
发表于 2017-1-9 22:42 | 显示全部楼层 |阅读模式
有一种条形码的标准叫EAN-13,由13个数字组成,前12位用户指定,最后一位按规则计算。
假设前12位已知,需要按以下规则生成第13位。
EAN-13最后一位校验码计算方法.png
最佳答案
2017-1-10 08:48
silenthunter 发表于 2017-1-9 23:18
前12位是:690123456789,根据规则第13位应该是2。
把2计算出来就完成需求。谢谢。

  1. Function f(t)
  2.     If Len(t) < 12 Or Len(t) > 13 Then f = "Len Err!": Exit Function
  3.     For i = 1 To 12 Step 2
  4.         s = s + Mid(t, i, 1) * 1 + Mid(t, i + 1, 1) * 3
  5.     Next
  6.     x = s Mod 10: If x > 0 Then x = 10 - x
  7.     f = Left(t, 12) & x
  8. End Function
复制代码


发表于 2017-1-9 23:00 来自手机 | 显示全部楼层
建议上传几条实际数据的文档,并手动写一个结果。
回复

使用道具 举报

 楼主| 发表于 2017-1-9 23:18 | 显示全部楼层
爱疯 发表于 2017-1-9 23:00
建议上传几条实际数据的文档,并手动写一个结果。

前12位是:690123456789,根据规则第13位应该是2。
把2计算出来就完成需求。谢谢。
回复

使用道具 举报

发表于 2017-1-10 08:48 | 显示全部楼层    本楼为最佳答案   
silenthunter 发表于 2017-1-9 23:18
前12位是:690123456789,根据规则第13位应该是2。
把2计算出来就完成需求。谢谢。

  1. Function f(t)
  2.     If Len(t) < 12 Or Len(t) > 13 Then f = "Len Err!": Exit Function
  3.     For i = 1 To 12 Step 2
  4.         s = s + Mid(t, i, 1) * 1 + Mid(t, i + 1, 1) * 3
  5.     Next
  6.     x = s Mod 10: If x > 0 Then x = 10 - x
  7.     f = Left(t, 12) & x
  8. End Function
复制代码


回复

使用道具 举报

发表于 2017-1-10 08:52 | 显示全部楼层
或者用数组三键输入数组公式:
  1. =MOD(10-MOD(SUM(IF(MOD(ROW(1:12),2),MID(A1,ROW(1:12),1)*1,MID(A1,ROW(1:12),1)*3)),10),10)
复制代码

评分

参与人数 2 +29 金币 +20 收起 理由
苏子龙 + 9 来学习
望帝春心 + 20 + 20 来学习~

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-28 19:30 , Processed in 0.338258 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表