マクロを使ったデータの積み上げ方と鞘の記録方法

このQ&Aのポイント
  • マクロを使用してエクセルのシートから日付順に株価の終値を積み上げる方法を教えてください。さらに、鞘(値差)を別のシートに記録する方法も知りたいです。
  • エクセルのシートから日付順に株価の終値を積み上げる方法をマクロを使用して教えてください。また、鞘(値差)を別のシートに記録する方法も知りたいです。
  • マクロを使ってエクセルのシートから日付順に株価の終値を積み上げる方法と、鞘(値差)を別のシートに記録する方法を教えてください。
回答を見る
  • ベストアンサー

マクロを使ったデータの積み上げ方を教えて下さい。

エクセルで以下のようなデータを蓄積していくシートから、 date  株価A終値  株価B終値 05/12/01   8560    12360 05/12/02   8590    12580 05/12/05   9000    12690  05/12/06   8550    12500  05/12/07   8600    12420 鞘(値差)を記録していく以下のような別シートに終値を日付順に積み上げていくにはどのようにすればよいのでしょうか?ご指導のほどよろしくお願いします_(._.)_ date  株価A終値  株価B終値  鞘 05/12/01   8560    12360   3800 05/12/02   8590    12580  3990 05/12/05   9000    12690  3690  05/12/06   8550    12500  3950   (この場合7日以降を積み上げていきたい)

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

  • ベストアンサー
  • e10go
  • ベストアンサー率38% (47/122)
回答No.2

こんにちわ。 >例では2つしかありませんが、ご指摘の通り株価のデータ、類似のシートが結構な数ありますので。 それでしたら、こうすればどうでしょう。 それぞれのシートを検索して、株価データがあれば、シート内の項目「鞘」に計算結果を入力する。 で、どうでしょう。 一応、A~C列に「date,株価A終値,株価B終値」があり、2行目からデータが始まると仮定して、マクロを作りました。 マクロは2つあり、「s_SheetSheath」で株価データシートを検索して、「s_Sheath」で株価「鞘」を計算して結果を表示します。 '--------マクロコード--------始まり Sub s_SheetSheath() '株価データシートの検索   Dim sh As Worksheet   For Each sh In Worksheets     If sh.Range("A1") = "date" _       And sh.Range("B1") = "株価A終値" _       And sh.Range("C1") = "株価B終値" Then _       s_Sheath sh 'A1~C1セルに"date","株価A終値","株価B終値"とあれば、株価「鞘」を計算する   Next sh End Sub Sub s_Sheath(sh) '株価「鞘」の計算   Dim iCount As Integer   Dim i As Integer   sh.Activate '計算する株価データシートに移動   iCount = Application.CountA(sh.Range("C:C")) '「株価B終値」列のデータ数を数える   If iCount = 1 Then Exit Sub '「株価B終値」列のデータ数が「0」の場合、このシートの株価「鞘」の計算を中止   For i = 2 To iCount     sh.Cells(i, 4) = sh.Cells(i, 3) - sh.Cells(i, 2)   Next i End Sub '--------マクロコード--------終わり なお、注意事項として、「株価B終値」列の途中の行に空白があると、最後の行に株価「鞘」の計算結果が表示されません。

cogoro
質問者

お礼

返信が遅くなり大変失礼致しました。 理解するのにだいぶ時間がかかりましたが、何とかいけそうです。ありがとうございました。

その他の回答 (1)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

鞘のセルに、 3つ左のセルが空白だったら空白 それ以外なら、1つ左のセル-2つ左のセルを表示 と、予め計算式を埋めておけばよいのでは? マクロを使う必然性が分かりません。 そういうシートやファイルが大量にあるとか? 予め鞘のセルを埋められない理由があるとか?

cogoro
質問者

補足

説明不足ですみません。 例では2つしかありませんが、ご指摘の通り株価のデータ、類似のシートが結構な数ありますので。

関連するQ&A

  • エクセルのマクロについて

    マクロのコードについて質問です。 シート1のセルA1の値が更新されるたびに、シート2のA1,A2と値が自動で反映されていくマクロを教えていただけないでしょうか。 シート1をベースとして、セルA1に記入した日付をシート2の表に12ヶ月分蓄積させていきたいと考えてます。 誤記入して蓄積してしまう可能性も高い思いますが、勉強のため教えていただきたいです。 難しいとは思いますが、対応お願いいたします。

  • エクセルで日毎のデータの蓄積

    シートBにその日のデータを入力し、そのデータをシートAに蓄積していきたいです。 手作業ならば、 1.入力されたシートBのその日のデータをコピー 2.シートAの同じ日付の行を探し、値のみペースト とするのでしょうが、これを自動化したいです。 セル参照だと、毎日、同じ行にデータが上書きされていくため 無理っぽいし、マクロを使わないとできませんか? コピーとペーストはできそうですけど、「同じ日付の行を探し」というところが難しそうだなぁと思いました。。。 すみませんが、よろしくお願いします。 シートA(データ蓄積用) 日付   データ 12/1   データ1 12/2 ・ ・ 12/31 シートB(データ入力用) 日付   データ 12/2   データ2 ↑日付が変われば、同じ行にデータを上書き

  • エクセルマクロ:別のブックから該当するデータをコピー

    Book1のSheet1、A列に日付、B列に対応するデータがあります。 Book2のSheet1A1セルに入力された日付と一致するBook1Sheet1B列の値を、Book2のB1セルに値貼り付けしたいのですが、どのように記述すればよろしいでしょうか。 宜しくお願いいたします。

  • データをコピーするマクロを教えてください。

    「入力用シート」に毎月データを入力し、出た値(例えばA1に値が出るとすると)を、別の「記録用シート」に月別にデータをコピーする“マクロ”を教えて下さい。 よろしくお願いします。

  • エクセルのマクロについて

    QNo.3421130で質問させて頂いた件の続きなのですが 入力シート(1)のA1に入力された値を、シート2のB1に表示(つまりB列の同じ行数のセルに表示)するというマクロをお教え頂き、早速実践してみましたが、入力シートA1に入っている値が入力シートA10から算出された値(例:A11に日付の2007/10/18と入っていて、A10にはMONTH関数で10だけを抽出している。そのA10の値10をA1が参照している状態やIF関数で反映された値等)がシート2に表示されません。 また本マクロは入力シート(1)とシート2の同じ行列のセルの表示しか出来ませんが、たとえば入力シート(1)のA2セルの値をシート2のB4に表示(任意で表示位置を変更する方法、シート2の反映セルを下へずらす等)が分りません。 以下、お教え頂いたマクロです。 Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column = 1 Then    Sheets("Sheet2").Cells(Target.Row, "B").Value = Target.Value  End If End Sub 続きの質問であることと、説明が分りにくく大変申し訳ありません。 非常に困っております。よろしくお願いします。

  • マクロの記録がうまくいきません。マクロの記録→セルを押してWEBクエリ

    マクロの記録がうまくいきません。マクロの記録→セルを押してWEBクエリを選択→データを取り込み→シートに表示されそれを日付順にセルの並び替えを選択→並び替えを確認→マクロの記録の停止の順でやっているのですが、マクロを実行するとデータは記録できているけど日付順の並び替えのみができていません。なぜでしょうか?何回記録しなおしても日付だけ並び替えされて記録されていません。ご教授お願いします。Windows 7 でExcel2007を使用しています。

  • マクロで出来ますか?

    こんにちは。どなたか分かる方がいましたら教えてください。 sheet1のA1の数値が1ならsheet1のB1の値をsheet2のA1へコピー sheet1のA1の数値が2ならsheet1のB1の値をsheet2のA1とB1の2ヶ所へコピー sheet1のA1の数値が3ならsheet1のB1の値をsheet2のA1とB1とC1の3ヶ所へコピー という風に出来ますか?出来るのならどういうコードを書いたらいいでしょうか?

  • エクセルのマクロについて質問です。

    エクセルのマクロについて質問です。 マクロを発動した時に、あるセルに入力してある数値を参照し、その行のX列目に数値を張り付けるものを作成しようとしています。 例えば シート「1」の A1に日付を入力 B1にある数字を入力 シート「2」の A列にA1→1~A31→31の日付が入力されている時 マクロ発動時にシート「1」A1の日付と一致する シート「2」のB列にシート「1」のB1の値を貼り付け ↑たとえばシート「1」のA1が1日でB1が500だった場合 シート「2」の1日(A1)と同じ行でB列(B1に500を 貼り付けるものです。 かなり下手な説明だと自覚しておりますが、解読できる方 どうかご教授ねがいます。

  • 現在値と時系列データをマクロで作りたい

    エクセル2010をウインドウズ7にて使用しています。 グラフを作る元データを形成するために自分なりにマクロ式を作ってみましたが、 うまくいかず困っています。 そこで、以下の内容を満たすマクロ式をぜひ例示していただけないでしょうか。 当方マクロには疎いため、エクセルにコピペすれば動作する式を例示いただければ大変助かります。 1.実現したいこと ○刻々と変化する数字データを一定時間ごとの時系列に固定化・記録したい ○現在の時間帯に相当するセルにはリアルタイムデータを表示する 2.説明 添付の画像をもとに説明します B列には、他のワークシートから参照したリアルタイムデータが入っています。 (「=別のシート!A2」という感じです) なおB列にある各行は、それぞれ別のセルから引用した個別のデータです。 それらのデータを、C列以降に30分ごとの区切りで記録していくとともに、 現在時間にあたる列(たとえば10:15であればE列)には、 「=B2」のように現在のリアルタイムデータを表示させたいのです。 つまり、現在データは現在の時間帯のセルに表示させつつ、 一定時間ごとで区切った過去の時系列データも記録したいということです。 その時系列データ・現在データをもとにグラフを作成することを考えています。 (具体的には、「スパークライン」の作成) 自分でマクロを作成してみたときの流れは以下のような感じです 09:00直前の処理 1.C2に「=B2」を入力 2.C2を下へドラッグし、C3以下にB2同様に=B3、=B4・・と連続データを作成 09:30の処理 1.C2以下のデータをコピーし、C列に「値として貼り付け」を行うことで終値を固定データ化する 2.D2に「=B2」を入力 3.D2を下へドラッグし、D3以下にD2同様に=B3、=B4・・と連続データを作成 10:00の処理 1.D2以下のデータをコピーし、D列に「値として貼り付け」を行うことで終値を固定データ化する 2.E2に「=B2」を入力 3.E2を下へドラッグし、E3以下にE2同様に=B3、=B4・・と連続データを作成 同様の処理を30分ごとにO列まで繰り返す 以上です。 できれば一つのマクロで完結するような計算式だとありがたいです。 わかりにくい点がありましたらご指摘ください。 よろしくお願いいたします。

  • 行コピーして、今日の日付の行に貼り付けるマクロ

    こんにちは、エクセルマクロについて、助けて頂きたく質問させていただきました。 添付しました画像のような表があり、 セルA2に「=TODAY()」が入っていて、セルB2から右は別シートのデータを参照しています。 マクロを実行すると、2行目を行コピーし、セルA3以下の日付からセルA2の日付(今日の日付)を探し出して、行貼り付けしてほしいです。 行コピーや値で貼り付けはマクロの記録を使って、詳しくない私でもなんとか作ることはできるのですが、 今日の日付を探し出して、そこに貼り付ける。というマクロは作れませんでした・・・。 お助け下さい、宜しくお願いします! ※補足します セルA2の今日の日付は便宜上入力しているだけです。無い方がマクロを組みやすいのなら、無くせます。

専門家に質問してみよう