A列に日付、B列に体重、C列に前回計った体重との増減を数式で表示したいのですが、毎日記録している訳でないので参照するB列のセルが「数式の真横のB列のセルから上方にあるはじめに値のあるセル」になります。
これをVBAでなく、数式で記述するにはどうすればよいのでしょうか?
計算用のC列を追加して、D列に前回計った体重との増減を入力するようにしてもいいですか?
A列は日付
B列は体重で、
C列に次のような数式を入れます
=IF(B2,B2,C1)
そしてD列に
=IF(B2,C2-C1,"")
このように入力しておいて、C列を隠せばご希望通りの動作になると思います。
(行番号は適宜変更してください)
B列が入力されたら その手前に入力された行のB列と比較してC列を計算するということですね。
1行目から始めたとします。
新しくD列に 前回体重という項目を作ります。
セルD1に =B1 と入れます。
で、
セルC2に =IF(B2="",C1,B2-D1)
セルD2に =IF(B2="",D1,B2)
と入れてそれを コピーしてから 以下の行に貼り付けます。
D列を設けます。ここの2行目(D2)に、
=IIF(B1>0,B1,D1)
と書き込みます。これをD列にフィルすると、直前に記入されているBの値がD列に表示されることになります。
C2には、
=B2-D2
と記入すれば、増減が表示できるでしょう。
C列の増減の数式のことだと解釈しますと、D列を作ることで簡単にできます。
例えば
D1の数式を =B1
D2の数式を =IF(B2="",D1,B2)
D3以下の数式をD2を下にドラッグ。
B2の数式を =IF((D1-D2)=0,"",D1-D2)
B3以下の数式をB2を下にドラッグ。
そして、D列を表示しないにします。
これは、1日あたりの増減について調べたいのでしょうか。
もしそうだとするなら、C列における分母として日数が問題となりますね。そこで、その分母である日数の求め方ですが、まず、A列の各セルについて、「書式」により、「表示形式」を「日付」とします(2007/1/31などと入力した場合は自動的にそうなると思います)。その日付から、一つ前の日付を引いて、D列にいれます。そのD列の数字を引数として、関数DAY(Dn)をE列に入れます。このとき、例えば今日が2007/2/3でその前が2007/1/31だとしますと、1/31より3日を経過しているわけですから、「3」となります。そして、最後に、B列の数字より、その1つ上の数字を引いたものをBn-Bmとしますと、セルBnには、(Bn-Bm)/Enという数式を入れれば、OKです。
よろしければ、下記サイトの「体重管理コーナー」もごらんください。
コメント(0件)