• ベストアンサー

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

fmajinの回答

  • fmajin
  • ベストアンサー率61% (75/122)
回答No.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列の「温度」)を返してくれるようになります。日付が順不同だったりしてもかまいませんし、シリアル値で入力されていても、日数で入力されていても対応できます。

関連するQ&A

  • エクセルで日付データの比較/判定でカウント

    エクセルで日付データの比較/判定でカウント A1に 2006/2/22 A2に 2006/2/23 ---------- という日付データが入っている。 またc1~c4に c1:2006/2/24+時間  (例2006/2/24 07:18) c2:2006/2/23+時間 c3:2006/2/23+時間 c4:2006/2/22+時間 ---------- という時刻まで含む日付データが入っている。 (処理)A1とC列のデータの日付けが同じものは1つc4だけなのでカウントし1件とその横の B列(B1)にカウント件数を表示したい。 B1に書く式はどのようにすればよいか。よろしくお願いします。

  • エクセル :式の表現

    エクセルで日付データの比較/判定でカウント A1に 2006/2/22 A2に 2006/2/23 ---------- という日付データが入っている。 またc1~c4に C1:2006/2/24+時間  (例2006/2/24 07:18) C2:2006/2/23+時間 C3:2006/2/23+時間 C4:2006/2/22+時間 ---------- という時刻まで含む日付データが入っている。 (処理)A1とC列のデータの日付けが同じものは1つc4だけなのでカウントし1件とその横の B列(B1)にカウント件数を表示したい。 B1に書く式は=SUMPRODUCT((INT(C$1:C$4)=A1)*1) とすればいいのですが、このC$4という所を特にいくつまでと制限をしないでデータがあるうちは計算対象にする場合はどうすればいいですか。

  • 各区分ごとの最高値とその差を計算したいのですが

       [A列] [B列]     [C列]               [D列] [1行](天気) (気温)   (最高気温)           (気温差) [2行]  1   22.4  [3行]  2   20.5 [4行]  3   21.7  (B2~B4のうち最高気温)    [5行]  1   19.2 [6行]  2   17.0  (B5~B6のうち最高気温)  (直前最高気温C4との差) [7行]  1   19.8 [8行]  2   20.9  [9行]  3   20.1  (B7~B9のうち最高気温)  (直前最高気温C6との差) (以下省略) 上記のようにデータが並んでいるとします。 A列は同じ天気が続いた場合、その継続日数を順に入力しています。 例えばA列は上から順に晴れ1日目は1、晴れ2日目は2、晴れ3日目は3で、 次の日が雨で、雨1日目ということで1、雨2日目は2、次の日が 晴れで晴れ1日目だから1、晴れ2日目は2という具合です。 (但し、それぞれの天気が晴れなのか雨なのかはデータがないため 判別できません。分かるのはあくまで同一天気の継続日数だけです) そしてそれぞれの日の気温がB列に入力されています。 この場合における以下の2つの作業の処理方法を教えてください。 1)継続した同一天気の日の各区分ごとにそれぞれの最高気温を C列に出力する方法 2)D列に直前の最高気温との温度差を出力する方法 (上記の例で言うとD6にはC6-C4、D9にはC9-C6を求めたい) 実際にはデータ数が膨大なため、 回答はワークシート関数でお願いいたします。 OSはWindows2000、エクセルはExcel2000を使用しています。 よろしくお願いします。

  • エクセルで特定のセルに色をつけたい

    条件は以下の通りです。 ・A列には1年間分の日付が入っている。 ・B列には毎日1回キーボードから任意の数値を入力する。 ・B列に入力した数値が過去最低であったとき、その入力したセルとその左隣のセル(日付のセル)を塗りつぶす。 ・B列に入力した数値が過去最低であっても、すでに過去に同じ数値が入力されていた場合は、過去のセルを塗りつぶす。 例 2/1 98 2/2 96 2/3 92 2/4 94 2/5 92 2/6 93 この場合、最低の数値は2/2と2/5の92ですが、塗りつぶしたいのは2/2のセルです。 そしてさらに2/7に84と入力したら2/2のセルの塗りつぶしは解除し、2/7のセルを塗りつぶしたいのです。 以上よろしくお願いします。

  • エクセルのセルの並べ替え

    お世話になります。エクセル2007を使用しているのですが、手動でコピペではかなり面倒なことになったので質問させていただきます。 A1からA100のセルに数値のデータが入っているとして、 A1~A100のデータを順に4つづつA1,A2,A3,A4、次は隣の列にいってB1,B2,B3,B4そしてまた次の列にいってC1,C2,C3,C4・・と 最終的に4行25列に並べ替えたいのですが、楽に並べ替える手法はあるでしょうか。 この作業を何回も繰り返さないといけないので、やり方がわかる方どうか教えて下さい。

  • エクセルのマクロ

    A列とB列に以下のような感じでデータが入ってます。 A列 A1  1 A2  あ A3  い A4  う A5  え A6  2 A7  お A8  か A9  3 A10  さ A11  し A11  す B列 B1   1 B2   a B2  2 B3  b B4  c B5  3 B6  d B7  e 両列に共通しているのは数字の1から始まり、1の後に何らかのデータが続いた後に2がきて、また何らかのデータが続いた後に3がきます。 そんな感じで数値が増えて両列とも500(行ではなく数値が)まであります。 この二つの列のデータを合わせたものをC列に表したいのですが。 その規則ですが。まず1がきて、その後にB列の1から下のデータ(2の前まで)がきて、次にA列の1から下のデータ(2の前まで)がきます。2以下も同様になります。 C1  1 C2  a C3  あ C4  い C5  う C6  え C7  2 C8  b C9  c C10  お C11  か C12  3 C13  d C14  e C15  さ C16  し C17  す C列のデータを求めるマクロを教えてもらいたいのですが。 よろしくお願いします。

  • エクセルでのセルの参照

    sheet1にデータが入力されています。 そしてsheet2ではそのsheet1に入っているデータを 抽出するsheetとして使用しています。 そこで、sheet2にある一つのセルに3と入力したら sheet1で使用しているA3、B3、C3、D3・・・ のセルのデータを、 4と入力したら A4、B4、C4、D4・・・ のセルのデータをsheet2のそれぞれのセルに引っぱってこれるように 関数を書きたいと考えています。 INDIRECTが機能的に近いのかなと考え、式を試してみたのですが なかなかうまくいきません。 また、4と入力したときにA5、B5、C5、D5を参照するというように 数値をいじったりできるであればそれも教えていただきたいです。 よろしくお願いいたします。

  • エクセル2000で質問です。

    下記のように式を入れたいのです。 先ずC1にはすでに数値が入力されています。 そこからA2を足しB2、B3を引いた数値をC3に出す。 日付順に並んでいるのですがA列には一つの日付に対して 一つしか数値が入りませんがB列には一つの場合も複数行入る場合もあり いくつ入るか分かりません。 いくつ入るか分からないのですがその日のB列に入った数値はすべて 引き算してその横のC列のセルにその答えを反映させたいのです。 この場合C列にどのような式を入れれば良いのでしょう? 下記の表の場合は 5000+300ー500-600=4200 4200+800-400-700-100=3800 というふうになっていくようにしたいのです。             A       B      C 1                         5000 2  10/20     300    500 3   10/20             600   4200 4   10/21     800    400 5   10/21            700 6   10/21            100    3800 7   10/22     500    300    4000 8   10/23     300    900    3400 9   10/24    1000    700 10  10/24            1200   2500

  • エクセル 空白セルを0にして……

    エクセルで表を作成しています ごく簡単な表なのですが 作成しているうちに 疑問が でてきたので 質問させていただきます 光熱費の表を作成しているのですが  B3に当日の水道のメータ数字 C3に前日の水道メータの数字表示 D3にその差 B4にまたその当日のメーター表示 C4に前日のメーター表示 D4にはまたその差が入力さ れるように設定 また、入力 当日のデータを入力したら 自動的に 翌日のセルの前日データのセルに 同じ数値が入るようにしています(例えばB3に入力したら翌日のC4セルに同じ数値が入る ) といったように 設定しました ここまでで 大体の表が完成したのですが ちょっと困ったことが おきてきました 当日の数値を入力すると 翌日のCセルに入力するようにしたのですが(B3に 入力すると 同じ数値がC4入力されるように設定) その際 一つおききしたいことができました 当日の数値を入力すると 翌日のB列が空白になり その行のEセルに数値が入って しまうのです。わたしとしては 基本的な設定を変えずに、ここを0に設定したいのですが その方法が分かりません  これとは 別に平行して 家計費の表を別で作成していた時 他の方からのアドバイスで 以前、空白の欄を0をする 関数を教えていただきました 其の時は 他の関数と 重なっている関数でした(加算減算を同時にする計算) この時の =IF(count(B3)=,"", , といったような関数を参考に色々試してみたのですが 中々うまくできません どうしたら この状況を解決できるでしょうか? 何方か お知恵をお貸しください 説明が分かりづかくて 申し訳ありません 宜しくおねがいいたします OSはVISTA ヴァージョンは2007です 重ねてもうしあげますが 説明が分かりづらくて申し訳ありません

  • エクセルでセル間の差の入力

    たとえばA1からA100まで数字が入力されているとします。 A50から10上のセル(A40)との差をB50に入力するには当然、B50に =A50-A40 という式を入力します。 ここでC1に10と入力すればB50に =A50-A40 の結果を入力(10上のセルとの差)し、C1に9と入力すると、B50に =A50-A41 の結果を入力(9上のセルとの差)、C1に-9と入力すると、B50に =A50-A49 の結果を入力(9下のセルとの差)するような式をB50に入力したいのです。 どのような式を入力すればよいでしょうか。 わかりにくければ補足します。