dポイントプレゼントキャンペーン実施中!

すいません,お知恵を貸してください。

モデルを簡単にしますね。

○現在A1セルに,刻々と数値が変わる数式が入っています。(具体的には株価です,自動で変わります,楽天RSSです)

○そこで例えば9時20分から9時40分までの間の最高値と最小値を取得したいのですが,どうしたら良いでしょうか?

○関数でセルにif分を使うと自セルとの比較になり,どうしても循環参照になってしまい,できません。

○VBAでPrivate関数のworksheet_changeを使用してみましたが,手入力と違うからかマクロがA1の値変更には反応しません。

○次々と値を新しいセルに20分間ぶっこんでいって後で集計も考えましたが,一日中動かしますので,負荷が高すぎて現実的ではありません。

どなたか,お知恵をよろしくお願いいたします。やりたい事はいたってシンプルですので,私がただの馬鹿なのかもしれませんが・・・

A 回答 (3件)

VBAの勉強を始めて3日目の者です。


以下のコードをsheet1のところに記述すると、とりあえずできると思います。。。
A1には株価
B1に最高値
C1に最安値を表示させます

Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String
If Target.Cells.Count = 1 Then
s = Target.FormulaLocal
On Error Resume Next
Application.EnableEvents = False


If Range("a1") > Range("b1") Then
Range("b1") = Range("a1")
End If

If Range("c1") = "" Then
Range("c1") = Range("a1")
End If

If Range("a1") < Range("c1") Then
Range("c1") = Range("a1")
End If

Application.EnableEvents = True
On Error GoTo 0
End If
End Sub

参考になりますでしょうか。。。
    • good
    • 0
この回答へのお礼

昨日は出張にてお礼が遅れまして申し訳ございません。早速試させていただきました。
しかし,結果は残念ながら・・・Xでした。

A1に手入力で数字を入力すればprivate関数の
worksheet_changeにて,まさに正しく動作しますが
A1に株価自動数値入力の以下の関数を入れると

=RSS|N225.FUT01.OS!現在値
(楽天証券のオリジナル関数,株価がリアルタイムで更新されます)

B1,C1共に反応を示さず,A1だけが刻々と更新されます。
試しにD1に上記関数を,そしてA1に=D1とやっても結果は同じでした。
手入力しか,Private sub関数は反応しないのでしょうか?

お礼日時:2006/08/10 09:39

RSSの関数を調べれば分かりますが


Excelのセル式の情報コードに対象銘柄の
高値、安値、高値時刻、安値時刻を指定すれば
各々取得できるので、後は範囲時刻内で
最高値、最安値を求めればいいですよ。

RSS|' 銘柄コード . 市場コード '! 情報コード
RealTimeSpreadSheetのソフト仕様をよく調べることです。

この回答への補足

回答ありがとうございます。20分足での,それぞれの高値,安値を
9:00ー9:20
9:20-9:40
9:40-10:00
のように取得していきます。
RSSに標準装備の最高値,最安値は

「一日」を通してのものですので
役には立ちません。

補足日時:2006/08/08 12:30
    • good
    • 0

いろいろ方法はあると思いますが、



>関数でセルにif分を使うと自セルとの比較になり,どうしても循環参照になってしまい,できません

最高値と最小値というセルを作ってそこと比較したら
いかがでしょうか。

この回答への補足

回答ありがとうございます

>>最高値と最小値というセルを作ってそこと比較し>>たらいかがでしょうか。

今度はそのセルが循環参照になってしまいます。

補足日時:2006/08/08 12:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!