首页 ExcelVBA统一信用代码校验
文章
取消

ExcelVBA统一信用代码校验

统一社会信用代码(Uniform Social Credit Code),通常称为统一信用代码,是中国政府推行的一种用于识别和管理企业和其他组织的唯一标识符。这个代码旨在整合以往多个不同类型的企业注册号码,如工商营业执照号、税务登记号等,以减少冗余、提高效率,并加强监管和风险防控。

  • 统一信用代码由18个字符组成,包括数字和大写英文字母。每个字符代表不同的信息。例如,第1至6个字符表示登记管理部门代码,第7至8个字符是机构类别代码,第9至17个字符是组织机构代码,最后一个字符是校验码。

  • 统一信用代码的优点包括:

    • 减少重复信息: 一个企业或组织只有一个统一信用代码,避免了多个不同的注册号码。

    • 提高效率: 统一信用代码可以在不同的政府部门和机构之间共享,减少了重复填写和核验的过程。

    • 便于监管: 统一信用代码有助于政府监管机构更方便地获取企业信息,进行风险评估和监控。

    • 鼓励诚信行为: 统一信用代码体系将信用信息与企业或组织关联起来,对于不良行为的企业可能会受到信用惩戒。

    • 国际对接: 统一信用代码与国际标准(ISO 7064)相符,有助于企业在国际交流和合作中的对接。

'统一代码校验,自定义公式
Function tydm(in_tydm, bz)  'in_tydm为统一代码,bz为显示值,
in_tydm = Trim(in_tydm)    '去除统一代码空值
'TC = "0123456789ABCDEFGHJKLMNPQRTUWXY0" '除去字母 I O S V Z
TC = "0123456789ABCDEFGHJKLMNPQRTUWXY0" '除去与数字相似的字母 I O S V Z
tcer = ""
te = Len(in_tydm)
For ti = 1 To te
    If InStr(TC, Mid(in_tydm, ti, 1)) < 1 Or ti > 18 Then
      tcer = tcer + Mid(in_tydm, ti, 1) + "(" + Trim(str(ti)) + ")"
    End If
 Next
  If Len(in_tydm) < 17 Then
  te = Len(in_tydm)
  Else
  te = 17
End If
 tm = 0
If bz = 1 Then
 If Len(Trim(tcer)) = 0 And te = 17 Then
    For ti = 1 To te
       tm = tm + (InStr(TC, Mid(in_tydm, ti, 1)) - 1) * ((3 ^ (ti - 1)) Mod 31)
    Next
    tydm = Mid(in_tydm, 1, 17) + Mid(TC, 31 - (tm Mod 31) + 1, 1)
   Else
   tydm = ""
 End If
End If
 If bz = 2 Then
 If Len(Trim(tcer)) = 0 And te = 17 Then
    For ti = 1 To te
       tm = tm + (InStr(TC, Mid(in_tydm, ti, 1)) - 1) * ((3 ^ (ti - 1)) Mod 31)
    Next
    If Mid(in_tydm, 18, 1) = Mid(TC, 31 - (tm Mod 31) + 1, 1) Then
       tydm = "正确"
       Else
       tydm = "错误:(18)=" + Mid(TC, 31 - (tm Mod 31) + 1, 1)
    End If
   Else
    If te < 17 Then
       tydm = "错误:" & te
       Else
       tydm = "错误:" + tcer
    End If
  End If
End If
End Function

ExcelVBA集装箱号校验公式

LED灯具