将9位CUSIP代码转换为ISIN代码

时间:2015-05-30 10:52:44

标签: excel type-conversion finance

如何将9位CUSIP代码转换为ISIN代码,最好是在Excel中?

3 个答案:

答案 0 :(得分:7)

CUSIP完全包含在ISIN中。然后,ISIN以2个字母为前缀(在这种情况下,“US”或“CA”,因为CUSIP是北美标识符),最后是数字。

确定最后的数字:

  

ISIN US0378331005,从CUSIP 037833100扩展而来.ISIN的主体是20世纪70年代分配的原始CUSIP。前面添加了国家/地区代码“US”,最后添加了一个校验位。国家/地区代码表示发行国家/地区。校验位以这种方式计算。

     

将任何字母转换为数字:

     

U = 30,S = 28. US037833100 -> 3028037833100

     

收集奇数和偶数字符:

     

3028037833100 = (3, 2, 0, 7, 3, 1, 0), (0, 8, 3, 8, 3, 0)

     

将包含最右边字符(即FIRST组)的组乘以2:

     

(6, 4, 0, 14, 6, 2, 0)

     

添加个别数字:

     

(6 + 4 + 0 + (1 + 4) + 6 + 2 + 0) + (0 + 8 + 3 + 8 + 3 + 0) = 45

     

取总和的10s模数:

     

45 mod 10 = 5

     

减去10:

     

10 - 5 = 5

     

取结果的10s模数(这个最后一步在和的模数为0的情况下很重要,因为得到的校验位数为10)。

     

5 mod 10 = 5

     

所以ISIN校验位是五。

来源:http://en.wikipedia.org/wiki/International_Securities_Identification_Number

答案 1 :(得分:4)

虽然有一个将CUSIP转换为ISIN的公式,但它可能并不总能为您提供正确的ISIN。

例如:

CCL有CUSIP 143658300,​​如果您使用该公式,其ISIN应为US1436583009,但其ISIN为PA1436583006(属于CVC1)的另一个原因。如果一只股票在美国以外的地方列出并且已经有一个ISIN,那么它的cusip就不会派生了从那个ISIN转换将是错误的。

答案 2 :(得分:1)

这是一个额外数字的 U ser D 定义 F unction (UDF)

Public Function CUSIPCONV(ByVal st As String) As Long

   'Using ideas from original by Jelle-Jeroen Lamkamp 28 Apr 2008

   Dim x As Integer, lTotal As Integer, stTemp As String, stNum As String
   st = UCase(Trim(st))
   If Len(st) <> 11 Or Mid(st, 1, 1) < "A" Or Mid(st, 1, 1) > "Z" Then Exit Function
   stNum = ""

   For x = 1 To 11
       stTemp = Mid(st, x, 1)
       If stTemp >= "0" And stTemp <= "9" Then
          stNum = stNum & stTemp
       ElseIf stTemp >= "A" And stTemp <= "Z" Then
          stNum = stNum & CStr(Asc(stTemp) - 55)
       Else
          Exit Function
       End If
   Next x

   stNum = StrReverse(stNum)
   lTotal = 0

   For x = 1 To Len(stNum)
       lTotal = lTotal + CInt(Mid(stNum, x, 1))
       If x Mod 2 = 1 Then
          lTotal = lTotal + CInt(Mid(stNum, x, 1))
          If CInt(Mid(stNum, x, 1)) > 4 Then
             lTotal = lTotal - 9
          End If
       End If
   Next x

 CUSIPCONV = (10 - (lTotal Mod 10)) Mod 10

End Function

不是我的代码,我发现它Here

用户定义函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从Excel使用UDF:

      = CUSIPCONV(A1)

      要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      有关UDF的详细信息,请参阅:

      http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

      必须启用宏才能使其生效!

      一些使用样本:

      enter image description here