Excelで為替のヒストリカルデータを眺めていたら、結構抜けがあることに気づいた。
1分足からほかのチャートにコンバートする際に問題になるだろう。
関数で色々挑戦してみたが、時刻のシリアル値を操作するのは誤差が出て難しかった。
で、必要に迫られてVBAで簡単なプログラムを作った。
目視で調べても良いんだけど、1年分で369564行あるわけで軽く死ねる。
これを何年か分も目視するなんて、無理だ。
で、ラクをしようといろいろと工夫してみた。
だが、VBAが全然わからず、if〜thenとfor next で簡単なものを作るだけで2時間も掛かってしまった。
それでも目視で調べるよりは断然速い……と思う。
時々数字がおかしいものが出るが、異常値だけはじき出せば用が足りるので、これで十分かと。
ソースデータは下記のような構成になっている。
Time Open High Low Close
2015/1/2 0:00 119.666 119.742 119.666 119.741
2015/1/2 0:01 119.741 119.741 119.695 119.7
==============================
Sub データ欠損調査()
Dim 行数, i As Long
Range("B2").Value = True 'trueにしないと欠損データ修復ロジックに影響するため
行数 = ActiveSheet.Range("A1").End(xlDown).Row
For i = 3 To 行数
If DateDiff("n", Range("A" & i), Range("A" & i - 1)) <> -1 Then
Range("B" & i) = Abs(DateDiff("n", Range("A" & i), Range("A" & i - 1)))
Else
Range("B" & i) = "true"
End If
Next i
MsgBox "データ欠損調査終了"
End Sub==============================
0 件のコメント:
コメントを投稿