• ベストアンサー

MAX とMIN早い方を見つけたい

例えば 為替のデータで 100円で買ったものが30日の間に 105円で勝ち ”○” 95円になると負け ”×” として MAX と MIN関数で それぞれ別の列に求めていますが、 どちらかの条件が先に満たされたら参照を終わりにしたいのです。 もしかしたら簡単かなと思いましたが、頭がこんがらがってしまいお知恵拝借おねがいできればよろしくお願いします。

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

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

関数では思いつかなかったので、マクロにしました。 データバックアップの上で確認してください。 Sub test1()  Dim i,m  i = 2  Do    For m = 1 To 30      If Cells(i + m, 3) > Cells(i, 3) + 5 Then        Cells(i, 8) = "○"        Cells(i, 9) = ""        Exit For      End If      If Cells(i + m, 4) < Cells(i, 3) - 5 Then        Cells(i, 8) = ""        Cells(i, 9) = "×"        Exit For      End If      If m = 30 Then        Cells(i, 8) = "△"        Cells(i, 9) = "△"      End If    Next m    i = i + 1  Loop Until Cells(i, 1) = "" End Sub

その他の回答 (2)

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

初心者です。 質問は、こんな感じで考えていいのでしょうか? A1~A30に100で始まる30個の為替データがあり、 最初に105以上になったのなら勝ち 最初に95以下になったのなら負け を簡単に調べたい。 そうだとすると、B2に  =IF(B1<>"","確定済",IF(A2>=105,"○",IF(A2<=95,"×","")))と記述し、 B3~B30はコピーアンドペースト ではいかがでしょうか? 意図と違いますか??? 違うようなら補足説明をお願いします。

Naodes
質問者

補足

補足します。 <仮に数字をいれますと>    A列    B列  C列  D列  E列 1  日付   始値  高値  安値  終値 2  mm/dd 99.2 100.0 98.5 99.7 3  mm/dd 99.7 101.0 99.5 99.9 4 5 という連続データ(3000行ほど)がある過去の任意の期間の分析をしています。 実際は長い式なんですがわかりやすく分解すると 2行目から F列    =MAX(OFFSET($C3,,,30,1)) G列    =MIN(OFFSET($D3,,,30,1)) と最高、最安を取得 今回の質問の 100円とは $C$2 の値です。勝ち負けの95円、105円というのは暫定的で変わることがありますが H列 =IF(F2-C2>5,"○","") G列 =IF(G2-C2>-5,"×","") と連続データなんですが、H、G列ともに表示される事があるのでよわっています。 つまり =MAX =MIN の照合期間を最大30日までで早く適合した方を探したいわけです。 説明がへたですみません。わかりましたらよろしくお願いします。

noname#39970
noname#39970
回答No.1

MINならMAX側 MAXならMIN側 を参照して既に値が入っていたら求めない とか

関連するQ&A