|
こんにちは、Satsukiと申します。
あちこち調べましたが、わかりませんでしたので、ご教示お願いいたします。
為替に関する集計用VBAを作成中です。
下記のような2つの表があり2つめの表には10分ごとの最高値と最安値が表示されています。
1つめの表の右欄外にオープンから決済までの期間の最安値(または最高値)を表示したいのですが、時間の検索がうまく行きません。
(HajimeJが"nothing"になる。)
2つめの表はCSVデータをダウンロードしたもので、時間の欄は、表示形式を文字列に設定してみると0.111122685などというシリアル値(?)になっています。
よろしくお願いいたします。
オープン時間 オープンレート 決済時間 決済レート
4/20/2010 2:09:09 AM 85.686 4/20/2010 4:32:52 AM 86.026
4/20/2010 4:32:52 PM 86.068 4/20/2010 7:51:41 PM 86.423
・
・
日付 時間 最大 最小
2010/4/20 2:00:01 85.85 85.56
2010/4/20 2:10:01 85.93 85.82
・
・
Sub kensaku()
・
・
Dim KaishiJ As Date
Dim HajimeJ As Range
Dim jikanTF As String
j = ActiveSheet.Range("A6").End(xlDown).Row
For i = 6 to j
・
・
KaishiJ = TimeValue(ShoshikiJikan(Cells(i, 1), jikanTF))
↓R列に2つめの表の「時間」データ
With ActiveSheet.Range("R6:R" & Range("R6").End(xlDown).Row)
Set HajimeJ = .Find(what:=KaishiJ, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByColumns, MatchByte:=False)
・
・
Next i
・
・
End Sub
'時間データを10分おきに置き換えるプロシージャ
Private Function ShoshikiJikan(jikanAP As String, jikanTF As String) As String
Dim jikan As String
jikan = Right(jikanAP, Len(jikanAP) - InStr(jikanAP, " "))
Dim jiTF As String
If Right(jikan, 2) = "PM" Then
If Left(jikan, 2) = "12" Then
jiTF = "00"
Else
jiTF = Left(jikan, InStr(jikan, ":") - 1) + 12
End If
Else
jiTF = Left(jikan, InStr(jikan, ":") - 1)
End If
ShoshikiJikan = jiTF & Mid(jikan, InStr(jikan, ":"), 2) & "0:01"
End Function
|
|