アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBA初心者です。エクセルで株投資の判定プログラムの作り方を教えてください。
約1年分の日足のデータ入力などは済んでいます。移動平均線の計算、Macdの計算も済んでいます。

今、N列の最終行に2本の移動平均線のクロスサイン(GC)が出ています。
この時に隣のO列の7日前の行から前日までの行ににMacdの買いサイン(MGC)が出ていたら、  M列の最終行に買いのサイン(買い)を出したいのです。
O列の7日前から前日までに(MGC)サインがあるか否かの検索方法をVBAでプログラム方法がわかりません。
あったときはM列に(買い)、なかったときは何もしないようにしたいです。
どなたか教えてください。よろしくお願いします。

A 回答 (1件)

こんばんは



残念ながら、どのセルをどうしたいのかよくわかりません。
質問者様には当然のことでも、回答者には「質問文の内容」が全てで、明記されていないいないことは想像の世界でしかありません。

>N列の最終行に2本の移動平均線のクロスサイン(GC)が出ています
通常「最終行」という場合、値のある(関数計算の結果が""のセルも含む)最終行のことを言うと思います。
ですので、サインがあろうがなかろうが、「最終行」は「最終行」として決まりますけれど?

>隣のO列の7日前の行から前日までの行に~
日付がどこにあるのか不明です。
単に、1日が1行と考えても良いのなら、「7つ前の行から1つ前の行まで」と解釈すれば良いのか・・・
その場合であっても、元になる行が7よりも小さい場合は、どうなるのか・・・

>サインがあるか否か~
「サイン」と言っているのは何を意味しているのでしょうか?
"GC"や"MGC"の文字列がセル値になっているという意味でしょうか?

>M列の最終行に買いのサイン(買い)を出したいのです。
上述のように、「最終行」には固定値か関数が入っています。
そのセルに上書きして値を設定したいという意味でしょうか?
(可能ではありますが、なんだか、違う意味のような気がします)


などなど、不明点が多すぎるのでなんともわかりかねますけれど・・・
通常、最終行を求める方法は、例えばN列(=14列)であれば、
 Cells(Rows.Count, 14).End(xlUp)
で該当するセルが求められます。
これは「N列の値がある(または関数が設定されている)最大行番号のセル」を求めるものです。
(ただし、N列が空列の場合は、N1セル(=空セル)が返されます)
セルの値を求めたければ、上記 Range.Value で取得できます。

あるセル(=Cell1)の右となり列の上に7行目から6行分のセル範囲を求めたければ
 Cell1.Offset(-7, 1).Resize(6)
などで求めることが可能です。
また、セル範囲に対して繰り返し同じ処理をしたいなら
 For Each c In セル範囲
  ~~繰り返し処理
 Next c
などで可能です。

このあたりを応用すれば、(多分)なさりたいことは実現できるのではないかと想像しますが、いかんせん内容が不明すぎるので、具体的なコードは書けません。
(方法はいろいろあるので、他の方法でも実現可能と思いますけれど…)
    • good
    • 0

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