Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


16886 / 76738 ←次へ | 前へ→

【65315】Re:時間の検索
質問  Satsuki  - 10/5/8(土) 21:13 -

引用なし
パスワード
   かみちゃん さん、早速のご回答ありがとうございます。
>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

以上です。よろしくお願いいたします。

0 hits

【65311】時間の検索 Satsuki 10/5/8(土) 16:35 質問
【65313】Re:時間の検索 かみちゃん 10/5/8(土) 18:40 発言
【65315】Re:時間の検索 Satsuki 10/5/8(土) 21:13 質問
【65316】Re:時間の検索 かみちゃん 10/5/8(土) 21:40 発言
【65317】Re:時間の検索 Satsuki 10/5/9(日) 0:34 質問
【65332】Re:時間の検索 Satsuki 10/5/12(水) 16:56 お礼

16886 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free