码迷,mamicode.com
首页 > 数据库 > 详细

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

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

标签:blog   http   使用   文件   数据   for   ar   2014   

最近处理的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结算价历史数据导入数据库

标签:blog   http   使用   文件   数据   for   ar   2014   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!