|
かみちゃん さん、早速のご回答ありがとうございます。
>2つの表は、シートが別なのですか?
>同一シートの別のセル範囲なのですか?
>Satukiさんのシートは、掲示板を見ている者には見えないので、
>どのシートのどのセルにどの値が入っているのか具体的に説明して、
>マクロ実行前のサンプルデータとマクロ実行後そのデータがどうなっていてほしいのか
>を説明していただきたいです。
なるべくシンプルに読みやすくしたつもりが、説明不足になってしまいました。
申し訳ありません。
同一シート上に2つの表が並んでいます。
オープン時間から決済時間までの間の最安値(わかりやすくするため最安値のみで説明します)を検索したいのです。つまりいくら含み損があったかを知るためのマクロです。
2つめの表は、どこかのサイトからダウンロードしたCSVデータですので、前述のように時間の欄が日付型(?)で来ているようです。続く列には、10分間ごとの最安値と最高値が表示されています。
実際には何日分かの取引データがありますが、わかりやすくするため、4月20日のみの取引分について検索するとします。
この欄に最安値を入力したい
【Sheet1】 ↓
A B C D E
1 オープン時間 オープンレート 決済時間 決済レート 最安値
2 4/20/2010 2:09:09 AM 85.686 4/20/2010 4:32:52 AM 86.026
3 4/20/2010 4:32:52 PM 86.068 4/20/2010 7:51:41 PM 86.423
4 ・ ・ ・ ・
5 ・ ・ ・ ・
Q R S T
1 日付 時間 最大 最小
2 2010/4/20 2:00:01 85.85 85.56
3 2010/4/20 2:10:01 85.93 85.82
4 ・ ・ ・ ・
5 ・ ・ ・ ・
Sub kensaku()
・
・
Dim KaishiJ As Date, KessaiJ as Date
Dim HajimeJ As Range, OwariJ 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))
KessaiJ = TimeValue(ShoshikiJikan(Cells(i, 3), jikanTF))
With ActiveSheet.Range("R6:R" & Range("R6").End(xlDown).Row)
Set HajimeJ = .Find(what:=KaishiJ, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByColumns, MatchByte:=False)
Set OwariJ = .Find(what:=KessaiJ, LookIn:=xlValues, lookat:=xlWhole, SearchOrder:=xlByColumns, MatchByte:=False)
・
・
End with
'ここで検索した範囲(行)の2つ隣の列の最小値を入力
With ActiveSheet
.Cells(i, 5).Value = Application.Min(Range(Cells(HajimeJ.Row,
HajimeJ.Column + 2), Cells(OwariJ.Row, OwariJ.Column + 2)))
End with
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
以上です。よろしくお願いいたします。
|
|