- ベストアンサー
エクセルで最大値と最小値を自動記録したい方法
- エクセルでDDE通信を使用して株価データを取得し、株価の差を記録する方法をまとめました。
- 差の最大値と最小値を自動的に更新するためのプロセスを解説しました。
- 使用するセルの例とともに、実現可能性についても触れました。
- みんなの回答 (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 '****ここまで
その他の回答 (2)
- ki-aaa
- ベストアンサー率49% (105/213)
まず、新しいシートを作ります。 そのシート名を"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には余分な式を書き込まないように!!
- 374649
- ベストアンサー率38% (203/527)
rabbit78さんは前にも質問されてますが、DDE通信での取得は現在値ではないですか、なぜ関数を使わないのかわかりませんが。 結論は可能です、4本足を記録すればよいのです(タイマーでも可能ですよ)。 ただこの種のソフトは自分で解決するか、有料しかも高いですがヒントはあちこちに在ります、頑張ってください。
補足
ひとつの銘柄の高値と安値はDDEと関数で取得表示できるのですが、 2銘柄の「差」の高値と安値を記録する方法がわかりませんでした。 タイマーで例えば1秒ごと差を記録していく事はできるのですが、 高値が1秒かからずに(記録する前に)下がってしまう事もあり、 何か良い記録方法は無いものかと思案していた次第です。
お礼
ご回答ありがとうございます。 コードをそのまま実行してみたところエラーになり、 With ThisWorkbook.Sheets("Sheet1")を"Sheet9"にして .Range("A1") = Abs(日立のセル - 東芝のセル) の行を削除すると実行できるようになりました。 現在問題なく動いていて感動しています。 この度は本当にありがとうございました。