• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 行をまたいだ計算式)

エクセル行をまたいだ計算式の要約

このQ&Aのポイント
  • エクセルの計算式について質問です。ある時系列毎の数字の列でAの値が1日前のBを超えた所と次にAの値が1日前のBを下回る日の差を求めたいです。
  • 具体的には、上記の表のデータでAとBの値を比較し、Aの値が1日前のBを超えた日から次にAの値が1日前のBを下回る日の差を求めたいです。
  • また、これを時系列に沿ってずーと繰り返して行きたいです。ランダムに出現し、稀に連続してAがBを上回る場合もあります。

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

  • ベストアンサー
回答No.2

とりあえず作ってみました。 大して動作検証等をしているわけではないので、御自身の判断で編集等してください。 一応すべての処理にコメントを入れています。 (ので見にくくなりましたが・・・・) -------------------------------------------------------- Sub 差分調査() Dim i, flag Dim sabun Dim maxrow Dim m_sabun '表の最終行 maxrow = Range("A1").End(xlDown).Row '3行目から最終行までを繰り返す For i = 3 To maxrow '該当行のB列から前の行のC列の値を引く sabun = Cells(i, 2) - Cells(i - 1, 3) 'もしその差分が正の数字でまだフラグが立っていないなら If sabun > 0 And flag = 0 Then '正になったからフラグを立てる flag = 1 '超えた日の先日のBを記憶 m_sabun = Cells(i - 1, 3).Value 'この行は確認用。間違いがなければ消してもOK Cells(i, 5).Value = "超えた!" End If '差分が負でフラグが立っているなら If sabun < 0 And flag = 1 Then '記憶した値から該当セルのB列を引いた値をD列に表示 Cells(i, 4).Value = Format(m_sabun - Cells(i, 2).Value, "###0.000") '上記同様に一応確認用 Cells(i, 5).Value = "割った!" 'フラグを戻す flag = 0 '記憶された数字を消す m_sabun = 0 End If Next i End Sub

uno577
質問者

お礼

meet_againさま  ありがとうございます!!  自分でもやってみましたが、できました!!  お手数なのに教えて頂いてとても感謝いたします  また何かあればご教授いただけると幸いです☆                UNO  

その他の回答 (1)

回答No.1

ゴメンナサイ!! アとイの位置が全然わからないです。。。 アは超えた時の前日のB? イは本文と写真でちがうようですが・・・。 尚、関数で実現するには作業用のスペースが結構必要になるので、 マクロ(VBA)を使っても良いですか?

uno577
質問者

お礼

meet_againさま、 早速の回答ありがとうございます! 申し訳ありません。。 アは越えた日の前日Bで結構です。 イの位置は本文が正解でした。写真は間違いです。。 是非ともマクロでも結構でございます~。 ご教授頂ければ幸いです。       uno

関連するQ&A