解説ですが
お示し頂いた表でいうところの
C7に焦点を当ててご説明します。
C7の結果はA1:B7の積み重ねの後にあるものですよね
A1:B7の中には"Pull"や"Put"が何回か出てきます
その中でC7に関係があるのは"Pull"や"Put"が記載されているセル中の
最もセルナンバーの大きいセルですよね
詰まり
=MAX(INDEX(($A$1:A7={"Put","Pull"})*ROW($A$1:A7),))
ですね
この式から導き出されるナンバーよりC7のセルナンバーである7までが対象となるわけですね
このことを元にOFFSET構文を組み立てると
=OFFSET($A$1,MAX(INDEX(($A$1:A7={"Put","Pull"})*ROW($A$1:A7),))-1,1,ROWS($B$1:B7)-MAX(INDEX(($A$1:F7={"Put","Pull"})*ROW($A$1:A7),))+1,1)
で調査対象となるセル範囲の配列が求まり
此に
SIGN(OFFSET($A$1,MAX(INDEX(($A$1:A7={"Put","Pull"})*ROW($A$1:A7),))-1,1,ROWS($B$1:B7)-MAX(INDEX(($A$1:F7={"Put","Pull"})*ROW($A$1:A7),))+1,1))
と、いう風にSIGN関数を被せることにより
値が正の数か負の数かが求まります
また
=OFFSET($A$1,MAX(INDEX(($A$1:A7={"Put","Pull"})*ROW($A$1:A7),))-1,0,1,1)
で最も間近な"Pull"や"Put"の記載内容が求まりますので
=(OFFSET($A$1,MAX(INDEX(($A$1:A7={"Put","Pull"})*ROW($A$1:A7),))-1,0,1,1)="Pull")*2-1
としてやれば、探すべき値が正の数なのか負の数なのかが解ります
後は探すべき対象の個数を数えて
初めて2個になったときに
詰まり直前のC6で1を、自らのセルC7で2を算出したならば
=(OFFSET($A$1,MAX(INDEX(($A$1:A7={"Put","Pull"})*ROW($A$1:A7),))-1,0,1,1)="Pull")*2-1
の反対である
(OFFSET($A$1,MAX(INDEX(($A$1:A7={"Put","Pull"})*ROW($A$1:A7),))-1,0,1,1)="Put")*2-1
を表示させてやればいい
ということになります
今回はCOUNTIFを使わずSUMPRODUCTを使って個数をカウントしましたが
これは
=COUNTIF(SIGN(B1:B7),1)
が認識されず拒否されるのと同時に
=COUNTIF(INDEX(SIGN(B1:B7),),1)
すらも駄目だったためです
=COUNTIF(B1:B7,">0")
とすればいけるようですが
今回の式にはそぐいませんね
もう1点
今回は総括して"Pull"も"Put"一括して対象とするように式を立てましたが
そもそも"Pull"と"Put"は二律背反なので
解として1が帰るように"Pull"と"Put"に別々な式を立てて
"Put"の式から"Pull"を減算するように組み立てても良いかもしれませんね
ただ、"Pull"や"Put"の記載セル位置の割り出しや
それ以降の値読みだし、
対象値のカウントなどは両式においてほぼ同じとなるよう予想されるので
此も先に示させて頂いた式と同様
結構単調なものとなるかも知れませんね
お礼
再度のご投稿ありがとうございます。 こちらで丁寧にご説明いただいたので、私にも理解することができました。 こちらの式で当てはめてみたところ、無事できました。 ありがとうございました。