DDE通信によりリアルタイムの株価データを取得し、
エクセルに株価を表示できる状態になっています。
(株価が変動すると自動的にセルの値が変わる)
これを使い2銘柄間の差をあるセルに表示しているのですが、
1日の中における差の最大値と最小値を他のセルに記録し、
値が更新されるのに伴い随時置き換えたいと思っています。
例)
日立280円
東芝260円
の場合は2銘柄間の差は20円。
この値が変化して最大値(最小値)を更新したら置き換え。
それ以外はそれまでの最大値(最小値)の値をセルに保持する、
という感じで記録していきたいのですが実現可能でしょうか?
(イメージ)
(A1セル=2銘柄間の差)
(B1セル=最大値)
(C1セル=最小値)
A1セルの値の変化
20(B1セルもC1セルも20)
23(B1セルを23に更新)
25(B1セルを25に更新)
22
21
15(C1セルを15に更新)
18
24
26(B1セルを26に更新)
20
当方の環境は
エクセル2000
OSはwinXP
DDE通信は楽天証券のリアルタイムスプレッドシート
を使用しています。
これがエクセルで可能なのかどうかもわからないのですが、
もし方法をおわかりの方がいましたらよろしくお願い致します。
No.3ベストアンサー
- 回答日時:
ちょっとだけ変更します。
'****ここから
Option Explicit
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
On Error GoTo error_shori
With ThisWorkbook.Sheets("Sheet1")
.Range("A1") = Abs(日立のセル - 東芝のセル)
If Not IsNumeric(.Range("B1")) Or .Range("B1") = "" Then
''''''数字以外か、ブランクのとき・・・
.Range("B1") = .Range("A1")
.Range("C1") = .Range("A1")
End If
If .Range("B1") < .Range("A1") Then .Range("B1") = .Range("A1")
If .Range("C1") > .Range("A1") Then .Range("C1") = .Range("A1")
End With
On Error GoTo 0
Application.EnableEvents = True
Exit Sub
error_shori:
MsgBox "エラーが発生しました。Err.Number..." & Err.Number
On Error GoTo 0
Application.EnableEvents = True
End Sub
'****ここまで
ご回答ありがとうございます。
コードをそのまま実行してみたところエラーになり、
With ThisWorkbook.Sheets("Sheet1")を"Sheet9"にして
.Range("A1") = Abs(日立のセル - 東芝のセル)
の行を削除すると実行できるようになりました。
現在問題なく動いていて感動しています。
この度は本当にありがとうございました。
No.2
- 回答日時:
まず、新しいシートを作ります。
そのシート名を"Sheet9"とします。
Sheet9に次の二つの式を書き込みます。セルはどこでもかまいません。
=日立のセル
=東芝のセル
Sheet9のタブを右クリックして、コードの表示を選びます。
出てきたシートモジュールに、以下のコードを貼り付けます。
'****ここから
Option Explicit
Private Sub Worksheet_Calculate()
With ThisWorkbook.Sheets("Sheet1")
.Range("A1") = abs(日立 - 東芝)
if Not IsNumeric(.Range("B1")) or .Range("B1") = "" then
''''''数字以外か、ブランクのとき・・・
.Range("B1") = .Range("A1")
.Range("C1") = .Range("A1")
end if
if .Range("B1") < .Range("A1") then .Range("B1") = .Range("A1")
if .Range("C1") > .Range("A1") then .Range("C1") = .Range("A1")
End With
End Sub
'****ここまで
Private Sub Worksheet_Calculate()は、シートが再計算されたときにおきる、イベントです。
Sheet9には余分な式を書き込まないように!!
No.1
- 回答日時:
rabbit78さんは前にも質問されてますが、DDE通信での取得は現在値ではないですか、なぜ関数を使わないのかわかりませんが。
結論は可能です、4本足を記録すればよいのです(タイマーでも可能ですよ)。
ただこの種のソフトは自分で解決するか、有料しかも高いですがヒントはあちこちに在ります、頑張ってください。
この回答への補足
ひとつの銘柄の高値と安値はDDEと関数で取得表示できるのですが、
2銘柄の「差」の高値と安値を記録する方法がわかりませんでした。
タイマーで例えば1秒ごと差を記録していく事はできるのですが、
高値が1秒かからずに(記録する前に)下がってしまう事もあり、
何か良い記録方法は無いものかと思案していた次第です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- その他(Microsoft Office) エクセルに関しての質問 2 2022/06/25 18:40
- Excel(エクセル) エクセルの関数(式)を教えてください。 1 2022/09/27 09:28
- Excel(エクセル) エクセルで月末、月初の判定をしたい。 4 2022/05/18 23:22
- Excel(エクセル) Excel 関数 数式 について 2 2022/09/02 21:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
エクセル オートフィルタで絞...
-
【Excel】 セルの色での判断は...
-
セルをクリック⇒そのセルに入力...
-
excelのCOUNTIF関数で、『範囲=...
-
エクセルのセルの枠を超えて文...
-
EXCEL VBA セルに既に入...
-
セルの高さ(行高)を求めるには?
-
Excelでのコメント表示位置
-
エクセルの一つのセルに複数の...
-
(Excel)数字記入セルの数値の後...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
EXCELのセルの中の半角カンマの...
-
公共建築工事 共通仮設費率 エ...
-
エクセルでオブジェクトを常に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
セルをクリック⇒そのセルに入力...
-
EXCEL VBA セルに既に入...
-
excelのCOUNTIF関数で、『範囲=...
-
【Excel】 セルの色での判断は...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
Excelで、「特定のセル」に入力...
-
エクセルの一つのセルに複数の...
-
複数のセルのいずれかに数字が...
-
excelの特定のセルの隣のセル指...
-
数式を残したまま、別のセルに...
-
ハイパーリンクの参照セルのズ...
おすすめ情報