こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルでセルの位置を変えて差を求める

100日分のデーターがあり、
A2以下A列に日付。
B2以下B列に温度。
C1に、比較日を入力。
C列にて温度差を求める。
たとえば、C1に2と入れると、C4にB4とB2の温度差。C5以下同様。
C1の数値を変えて比較値を求めたい。

投稿日時 - 2004-06-10 12:15:47

QNo.887263

困ってます

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

C2に

=IF(OR(B2="",ROW()-C$1<=1,ISERROR(INDIRECT("B"&ROW()-C$1))),"",B2-INDIRECT("B"&ROW()-C$1))

として、下方コピー+ペーストです。

投稿日時 - 2004-06-10 13:20:21

お礼

助かりました。ありがとうございました。

投稿日時 - 2004-06-10 13:33:51

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

A列の「日付」にどんな値(シリアル値か、1~100「日目」のような値)を入力しているのか、不明ですが、このような場合は、「VLOOKUP」関数を活用するのが基本だと思います。もちろん、INDIRECTなどを利用するのもアリだと思いますが、途中の日付が抜けていた場合などは対応できないので、注意が必要です。

100日分のデータが、A2:B101セルに入力されているとしますね。
この場合、C2セルには

=B2-VLOOKUP($C$1,$A$2:$B$101,2,0)

のように入力して、下方向にコピーします。この際、VLOOKUP関数の第3引数に、「0」(もしくは「FALSE」)を指定することで、C1セルに入力されているデータと同じものを、A2:B101の左端列から「完全に一致する」ものを検索して、見つかった行の「2」列目(ここではB列の「温度」)を返してくれるようになります。日付が順不同だったりしてもかまいませんし、シリアル値で入力されていても、日数で入力されていても対応できます。

投稿日時 - 2004-06-10 16:11:01

ANo.2

=B2-INDIRECT("B"&$C$1)
でできます。
日付でやりたい場合は
=B2-INDIRECT("B"&MATCH($C$1,$A$2:$A$101,1))
ただし日付で昇順に並べる必要があります。

投稿日時 - 2004-06-10 12:33:46

ANo.1

C2に以下のように入れて、下にコピーしてみてはどうでしょうか?

=B2-INDEX($B$2:$B$101,$C$1)

投稿日時 - 2004-06-10 12:28:14

あなたにオススメの質問