- ベストアンサー
エクセルVBAで連続したUPを検索するマクロの作成方法
- エクセルVBA初心者の方向けに、株価分析において過去25日間に連続したUPが7個ある場合に「○」を、DNが7個ある場合には「×」をM列に付けるマクロの作成方法を教えてください。
- エクセルの株価分析において、N列に自動的に表示されるUPやDNを使用して、過去25日間に連続したUPやDNを判定するマクロの作成方法を教えてください。
- エクセルVBAで株価分析を行っている初心者の方向けに、N列に自動表示されるUPやDNを使用し、過去25日間に連続したUPやDNを判定するマクロの作成方法を詳しく教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 横からお邪魔します。 No.1さんの補足を読ませていただいて・・・ 結局25日というのは無視して、連続7日「UP」が続けば「○」を 連続7日「DN」が続けば「×」をM列に表示させればよい訳ですよね? 一応そういうことだとして。 データは2行目からあるとしています。 Sub test() Dim i As Long For i = 8 To Cells(Rows.Count, "N").End(xlUp).Row If WorksheetFunction.CountIf(Range(Cells(i - 6, "N"), Cells(i, "N")), "UP") = 7 Then Cells(i, "M") = "○" ElseIf WorksheetFunction.CountIf(Range(Cells(i - 6, "N"), Cells(i, "N")), "DN") = 7 Then Cells(i, "M") = "×" End If Next i End Sub こんな感じではどうでしょうか?m(_ _)m
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
No.3です! たびたびごめんなさい。 投稿後に気づきました。 前回のコードはNo.2さんとほとんど同じ内容になっていました。 確認せずに投稿してごめんなさいね。m(_ _)m
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばA列に日付が入力されているとしたら次のようなマクロでどうでしょう。 Dim RowP As Long For RowP = 1 To Range("A65536").End(xlUp).Row If Cells(RowP, 1) = Date Then If WorksheetFunction.CountIf(Range(Cells(RowP - 6, 14), Cells(RowP, 14)), "UP") = 7 Then Cells(RowP, 13) = "○" Exit For ElseIf WorksheetFunction.CountIf(Range(Cells(RowP - 6, 14), Cells(RowP, 14)), "DN") = 7 Then Cells(RowP, 13) = "×" Exit For End If End If Next
お礼
KURUMITOさん こんにちは 回答ありがとうございました。 うまく作動するようです。 ほとんど同じ回答をくださったtom04さんをベストアンサーにしましたが あなたにも同じように感謝しています。 ありがとうございました。
- ki-aaa
- ベストアンサー率49% (105/213)
これを試してみてね。 Sub test() Dim iii As Long, jjj As Long Dim mySh1 As Worksheet, mySh2 As Worksheet Dim myRenzoku As Long myRenzoku = 7 '連続数 Set mySh1 = Sheets("Sheet1") For iii = 2 To 26 '二行目から二十六行目まで調べる jjj = WorksheetFunction.CountIf(mySh1.Range("N" & iii).Resize(myRenzoku, 1), "UP") '指定したセルを含め七つのセルすべてがUPかどうか調べる If jjj = myRenzoku Then mySh1.Range("M" & iii).Value = "O" End If jjj = WorksheetFunction.CountIf(mySh1.Range("N" & iii).Resize(myRenzoku, 1), "DN") If jjj = myRenzoku Then mySh1.Range("M" & iii).Value = "X" End If Next iii Set mySh1 = Nothing End Sub
補足
Ki-aaaさんこんにちは。 回答ありがとうございます。 さっそく試してみたのですが、私の説明がおかしかったために少し違ったふうになってしまいます。 7日連続で"UP"が出たらその最初の日に"○"が出てしまいます。 > N列に過去25日間(25行)に"UP"が7個連続であったらその日のM列に"○" の部分を 今日から過去7日間連続で"UP"があったらその日のM列に"○"が出る、と言うふうに表現を変えさせて ください。(過去25日は別のところで設定しています) 要するに今日を含めて過去7日間連続で"UP"出たら"○"ですよーと表現したいのです。 何かResizeプロパティとかすごく複雑でむずかしいですねー Offset関数か何かで簡単にできないものでしょうか? とにかく さっそくの回答ありがとうございます。 教えていただいて、感謝、感謝です。 これからもよろしくお願いします。
お礼
tom04さんこんにちは やったー うまくいきました、 ありがとうございます。 ベストアンサーにさせていただきます。 No.2のKURUMITOさんの回答とほとんど同じですがすっきりして見やすいのでこちらをベストアンサーに させていただきます。 これでマクロをごちゃごちゃといじくりまわさずにすみます。 ありがとうございました。