• ベストアンサー

Excel2003で、画像の図のような表でH列に「1」が表示されますと

Excel2003で、画像の図のような表でH列に「1」が表示されますと、D列にC列と同じ数値が表示されます。 B列とC列には逐一数値を手入力していきます。 D列の一番目の数値を二番目の数値から引き算した数値をE列の2番目の数値の同じ行に自動計算させたいと思っています。 例えば、D7-D5の数値をE7に、D11-D7の数値をE11に表示させます。 あるいはH列に「1」が表示されている行の数値間の引き算の結果をE列に表示させる、でもOKです。 そのやり方であればD列は不要になります。 ニュアンスが伝わりづらいかもしれませんが、逐一補足しますので、宜しくお願いいたします。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

例示のような数字が昇順に並んでいるデータなら、E3セルに単純に以下のような数式を入力すれば良いと思います(もちろんD列は不要です)。 =IF(H3=0,"",MAX($C$2:C3*$H$2:H3)-MAX(INDEX($C$2:C2*$H$2:H2,)))

Youyou
質問者

お礼

ありがとうございます。 そのままペーストでOKでした!

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

これって判りにくい質問の説明になっているが、質問者の場合を離れて、パターンを一般化すると 「同じ行で、(空白でない)直前の上行との差を求める」ということではないか。 質問者の場合の特殊例は質問の場合捨ててほしい。回答から、質問者の特殊なバイイに戻せないようでは質問する意味が無い。またこの一般化したパターンを見抜く力こそ、養成すべき、関数やプログラムの力なのだ。 例データ 第1行は空白。第2行から A列  B列(回答値) C列(作業列) 30 30 1 45 15 2 60 15 3 45 -15 4 41 -4 5 C列C2に式 =IF(A2="","",MAX($C$1:C1)+1) 下方向に式を十分な行数分複写しておく。 B2は=A2 B3には =IF(A3="","",A3-INDEX($A$1:$A$100,MATCH(C3-1,$C$1:$C$100,0))) この式を下方向に(入力される可能性のある行まで)複写する。 -- ・作業列を使わない ・VBAで非空白の直上の行を求める関数を作る 回答が出来そうだが、とりあえず。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.4

作業列を使うやり方を。 列Iを作業列にした場合、セルI2に =COUNTIF(H$2:H2,1)*COUNTIF(H2,1) もしくは、 =IF(H2=1,COUNTIF(H$2:H2,1),0) もしくは、 =COUNTIF(H$2:H2,1)*IF(H2=1,1,0) と入力して、下にコピペします。 これで、列Iには、 その行の列Hが1なら、列Hの2行目からその行までの1の個数、 その行の列Hが1じゃなかったら、0 が表示されます。 そして、列Eは、セルE2に =IF(I5>1,D5-LOOKUP(I5-1,$I$2:$I$11,$C$2:$C$11),"") と入力して、下にコピペします。 列Dは使っていません。 添付画像では、データの範囲が2行目から11行目までになっているので、数式もそれに合わせていますが、範囲が変わるのであれば、それに合わせて数式の値(11の部分)も変えてください。

Youyou
質問者

お礼

ありがとうございます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

D列を使わない方法です。 E2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(AND(H2=1,COUNTIF(H$2:H2,1)>1),C2-INDEX(C:C,MATCH(10^10,H$1:H1)),"")

Youyou
質問者

お礼

ありがとうございます。 申し訳ありませんが、ちょっと違うようですね・・・。 E7の結果がC7-C6になってしまいます。 本来はC7-C5にならないといけないのですが・・・。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 外していたらごめんなさい。 お示しの表のE2セルに以下の数式をこの画面からコピー&ペーストしてみてください。 尚、配列数式になってしまいますので、E2セルに貼り付け後 F2キーを押す、またはD2セルをダブルクリック、または数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 このE2セルをオートフィルで下へコピーしてみてください。 =IF(OR(H2=0,COUNTIF($H$2:H2,1)<2),"",INDEX($C$2:C2,LARGE(IF($H$2:H2=1,ROW($A$1:A1)),1))-INDEX($C$2:C2,LARGE(IF($H$2:H2=1,ROW($A$1:A1)),2))) 以上、お役に立てば良いのですが 的外れならごめんなさいね。m(__)m

Youyou
質問者

お礼

ありがとうございます。 #NUM!が出てしまいますね・・・。

関連するQ&A