秘密基地、どこに作った?

エクセルで以下のようなデータを蓄積していくシートから、
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日以降を積み上げていきたい)

A 回答 (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終値」列の途中の行に空白があると、最後の行に株価「鞘」の計算結果が表示されません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/12 16:18

鞘のセルに、


3つ左のセルが空白だったら空白
それ以外なら、1つ左のセル-2つ左のセルを表示
と、予め計算式を埋めておけばよいのでは?

マクロを使う必然性が分かりません。
そういうシートやファイルが大量にあるとか?
予め鞘のセルを埋められない理由があるとか?

この回答への補足

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

補足日時:2005/12/09 13:54
    • good
    • 0

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


おすすめ情報