首页 > 代码库 > VBA快速转换数据格式,将CBOT结算价历史数据导入数据库
VBA快速转换数据格式,将CBOT结算价历史数据导入数据库
最近处理的CBOT程序中,有一个CBOT的历史数据需要导入到数据库里,可是表的格式比较特别,先来看一下。
这个是从CBOT交易软件中导出的数据,从B到H对应的合约是1,3,5,7,8,9,11月,但是年份不是固定的,比如2010-1-12对应的合约时2010年的1月合约,也就是SF10,但是同样一列的下几行2010-1-17就是2011年的1月合约,就是SF11,也就是下一年的合约。
要把这个表导入到数据库中形成CBOT的历史记录来使用,需要把它变成下面的样子。
简单起见,根据换月规则,换月月份的14号是个节点,把原始数据按照这个规则先拆分成多个文件,由于历史数据不是很多这样也能处理得过来,如果特别多的话这个方法还需要改进。
将合约对应放到第一行后面点的位置,这个每个文件需要对应调整一下。
通过下面的程序进行变换,将每一行的数据循环写到新的表中。
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
由于表格数据比较特殊,采用了一下手工辅助处理的方法,期待你有更好的方法。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。