エクセルで最大値と最小値を自動記録したい方法

このQ&Aのポイント
  • エクセルでDDE通信を使用して株価データを取得し、株価の差を記録する方法をまとめました。
  • 差の最大値と最小値を自動的に更新するためのプロセスを解説しました。
  • 使用するセルの例とともに、実現可能性についても触れました。
回答を見る
  • ベストアンサー

最大値と最小値を自動記録したい

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通信は楽天証券のリアルタイムスプレッドシート を使用しています。 これがエクセルで可能なのかどうかもわからないのですが、 もし方法をおわかりの方がいましたらよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答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 '****ここまで

rabbit78
質問者

お礼

ご回答ありがとうございます。 コードをそのまま実行してみたところエラーになり、 With ThisWorkbook.Sheets("Sheet1")を"Sheet9"にして .Range("A1") = Abs(日立のセル - 東芝のセル) の行を削除すると実行できるようになりました。 現在問題なく動いていて感動しています。 この度は本当にありがとうございました。

その他の回答 (2)

  • ki-aaa
  • ベストアンサー率49% (105/213)
回答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には余分な式を書き込まないように!!

  • 374649
  • ベストアンサー率38% (203/527)
回答No.1

rabbit78さんは前にも質問されてますが、DDE通信での取得は現在値ではないですか、なぜ関数を使わないのかわかりませんが。 結論は可能です、4本足を記録すればよいのです(タイマーでも可能ですよ)。 ただこの種のソフトは自分で解決するか、有料しかも高いですがヒントはあちこちに在ります、頑張ってください。

rabbit78
質問者

補足

ひとつの銘柄の高値と安値はDDEと関数で取得表示できるのですが、 2銘柄の「差」の高値と安値を記録する方法がわかりませんでした。 タイマーで例えば1秒ごと差を記録していく事はできるのですが、 高値が1秒かからずに(記録する前に)下がってしまう事もあり、 何か良い記録方法は無いものかと思案していた次第です。

関連するQ&A

  • エクセルで時系列データを自動記録したい

    DDE通信によりリアルタイムの株価データを取得し、 エクセルに株価を表示できる状態になっています。 (株価が変動すると自動的にセルの値が変わる) これを、時間帯に分けて他のセルに自動記録したいのですが、 エクセルやマクロの機能にて実現可能でしょうか? (イメージ) 9:10 550 9:20 580 9:30 570 ↓ 以下15:00まで 当方の環境は エクセル2000 OSはwinXP DDE通信は楽天証券のリアルタイムスプレッドシート を使用しています。 これがエクセルで可能なのかどうかもわからないのですが、 もし方法をおわかりの方がいましたらよろしくお願い致します。

  • Excelで最大値と最小値を記録したい

    Excelを使って仕事をしています。 データ通信で接続していて、たくさんのセルに温度・圧力・流量などのデータが刻々入ってきます。 このデータを10分区切りで最小値、最大値を記録したのですがうまくゆきません。 現在は10分区切りの瞬間の値だけを記録していますが、データの意味を最大限活用したくて最小値と最大値を記録したいのです。 どなたか知恵をお貸しください。

  • セルデータをマクロ機能でSheet2に自動記録する方法を教えてください。

    質問(1) エクセル Sheet1のリアルタイムで変化している J8,K8,L8,各セルデータをマクロ機能でSheet2に自動記録する方法を教えてください。 記録方法&仕様 (1)Am9:00から記録開始しAm11:00で記録終了 (2)Pm12:30から記録開始しPm15:10で記録終了 (3)Pm16:30から記録開始しPm20:00で記録終了 Sheet2に記録 セル(J8)の値を10分間隔で (J8の開始値)、(J8の最大値)、(J8の最小値)、(J8の終値) に振分けて記録する。 セル(K8) の値を10分ごとに記録 セル(L8) の値を10分間隔で 開始値と終値を記録する 記録順序は添付図のようにお願いします。 参考→・(年月日と時間)・(J8開始値) (J8最大値) (J8最小値) (J8終値)・(K8重量)・(L8開始値) (L8終値)・ 質問(2) Sheet1のセル(M8)のデータは開始直後からリアルタイムでその数値が変化してます。 セル(M8)データとセル(G8)データを比較して、その数値に変化があった場合、セル(G8)の値をセル(M8)の値で書き換える、更新する。 ※セル(G8)の自動更新のみで、記録はしない、無し。 よろしくお願い致します。

  • エクセル 最大値、最小値

    エクセルでの質問です。 種類  結果 A     15 A     10 B     3 C     8 C     12 C     5 D     8 の様な表から各種類の結果の最大値と最小値を取り出したいのですが、種類が1000種類程ありうまく手間がかかって出来ません。 最大値、最小値をまとめた表は、エクセルで出来ないでしょうか。よろしくお願いします。

  • EXCELグラフの最大値最小値

    EXCELグラフの最大値最小値を、同じシート上にあるセルの値を反映させたいのですが、セルの値が変動しても自動的に反映されるVBコードの作り方をご存知の方いましたら教えてください。

  • エクセル2003 最大最小値の求め方

    価格の推移を1週間単位で調べています。 ある商品のA社、B社、C社、・・・を比較して 最大値と最小値を調査する表を作成しています。 イメージ的には下記のような形の表になります。    1W  /  2W  / 3W  /4W A  1000円/1500円/    /1200円 B C D  1800円/ ・ ・ ・ 最大値1800円/1500円/   /1200円 最小値1000円/ 最大値には  =MAX(A1:A5) 最大値には =IF(SUM(A1:A5),SMALL(A1:A5,1+COUNTIF(A1:A5,0)),"") と入力したのですが、1社しか価格の回答がなかった場合 最大価格も最小価格も同じ価格になってしまします。 最大=最小となった場合、最小価格欄を空欄で表示する 数式を教えてください。 どなたか、ご教示お願いいたします。 エクセル2003を利用しています。

  • エクセルで指定範囲の最大値・最小値を求めたい

    エクセルで、A列、B列、C列・・・にそれぞれ100個ずつ数値データがあります。 各列で1番上のデータからn番目のデータまでの範囲の最大値・最小値と、 n+1番目のデータから100番目のデータまでの範囲の最大値・最小値をそれぞれ求めたいのです。 nの値は列ごとに異なっており、例えばA列のn値は[A105]のセルに記入されています。 [A102]=40のとき、 =MAX(A2:A40) =MAX(A41:A101) などと個別に範囲指定をせずに、[A105]の値を引用して最大値・最小値を求めるにはどうすればいいでしょうか。

  • 最小値(最大値)を探す

    セルB2~B16及びD3~D20中でセルF5の値より小さければその値をF5に書き込むには!! また、セルF7の値より大きければその値をF7に書き込むには!! 関数で出来なければ、VBAでよろしくお願いします。 こちらのアプリケーションは、エクセル2000です。

  • 二次関数の最大値と最小値についてです

    高校二年生なのですが、この問題が解けず、苦戦しています。力を貸してください 二次関数f(x)=x2乗-2ax+b(a,bは定数、a>0)があり、f(x)の最小値は2である。 0≦x≦2におけるf(x)の最大値と最小値の差が3であるようなaの値をお願いします

  • 最大値最小値

    実数a,b,c,dについて、 a^2+b^2+c^2+d^2=1・・・(1) a+b+c+d=1・・・・(2) が成り立つとき、abの値の最大値最小値を求めよ。 次のように考えましたが、自信がありません。 よろしくお願いします。 a+b=s, ab=t とおく。 a,bを解とする方程式、x^2-sx+b=0 が実数解を持つから 判別式から、t=<s^2/4 ・・・(3) また(1)と(2)から、c+d=1-s、cd=s^2-s-t/2 c,dを解とする方程式、x^2-(1-s)x+(s^2-s-t/2)=0 が実数解を持つから 判別式から、t>=s^2-2s-1・・・(4) (3)(4)を満たすtの範囲から、最小値はs=1のときで、-2,最大値は(3)と(4)の交点から s=(4+2√7)/3のときで、(16+4√7)/9 何か条件を落としているような気がします。よろしくお願いします。

専門家に質問してみよう