首页 > 数据库技术 > 详细

VBA快速转换数据格式,将CBOT结算价历史数据导入数据库

时间:2014-08-18 18:40:42      阅读:344      评论:0      收藏:0      [点我收藏+]

最近处理的CBOT程序中,有一个CBOT的历史数据需要导入到数据库里,可是表的格式比较特别,先来看一下。

bubuko.com,布布扣

这个是从CBOT交易软件中导出的数据,从B到H对应的合约是1,3,5,7,8,9,11月,但是年份不是固定的,比如2010-1-12对应的合约时2010年的1月合约,也就是SF10,但是同样一列的下几行2010-1-17就是2011年的1月合约,就是SF11,也就是下一年的合约。


要把这个表导入到数据库中形成CBOT的历史记录来使用,需要把它变成下面的样子。

bubuko.com,布布扣


简单起见,根据换月规则,换月月份的14号是个节点,把原始数据按照这个规则先拆分成多个文件,由于历史数据不是很多这样也能处理得过来,如果特别多的话这个方法还需要改进。

将合约对应放到第一行后面点的位置,这个每个文件需要对应调整一下。

bubuko.com,布布扣

通过下面的程序进行变换,将每一行的数据循环写到新的表中。

Sub GetDate()

    Dim pDate As String
    Dim HeYue(10) As String
    Dim price(1000) As String
    
    '将合约存入数组
    HeYue(1) = Sheets(1).Range("J1").Value
    HeYue(2) = Sheets(1).Range("K1").Value
    HeYue(3) = Sheets(1).Range("L1").Value
    HeYue(4) = Sheets(1).Range("M1").Value
    HeYue(5) = Sheets(1).Range("N1").Value
    HeYue(6) = Sheets(1).Range("O1").Value
    HeYue(7) = Sheets(1).Range("P1").Value

    '按行循环
    For i = 1 To 8
    
         pDate = Worksheets(1).Cells(i, 1)
         
         '循环列
         For k = 1 To 7
        
             Worksheets(2).Cells(i * 7 - 7 + k, 1) = pDate                                 '日期
             Worksheets(2).Cells(i * 7 - 7 + k, 2) = HeYue(k)                              '合约
             Worksheets(2).Cells(i * 7 - 7 + k, 3) = Worksheets(1).Cells(i, k + 1)         '收盘价
         Next
    Next

End Sub

由于表格数据比较特殊,采用了一下手工辅助处理的方法,期待你有更好的方法。

VBA快速转换数据格式,将CBOT结算价历史数据导入数据库,布布扣,bubuko.com

VBA快速转换数据格式,将CBOT结算价历史数据导入数据库

原文:http://blog.csdn.net/upi2u/article/details/38658435

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!