プロが教えるわが家の防犯対策術!

いつもお世話になっております。

さて質問ですが、下に例を作成してみました。

現在は、B1に下のような式が入っています。
=IF(A1>0,(25-(A1*4.9404)*5)/40,0)
A1に数値を入れB1に答えが出るといった感じ、これが365日入力しています
   A  | B  |
-------------------
1| 0.3527 | 0.41 |

式の中にある4.9404という数値は薬品の校正値で2週間に一度、校正値が変わる度打ち変えています。

で、質問は
1)別のシートに校正値というセルを作り、そこに入力すればB1の数値が日付の新しいものを参照する。
   日付  | 校正値 |
------------------------------
1|2007/08/01 | 4.9459 |
2|2007/08/17 | 4.9423 |

2)B1の数値は校正値が新しいものを参照するが、一度計算されたものは校正値が新しくなっても書き換えられない。

こういうものは作成可能ですか?

ご教授願います。

A 回答 (2件)

薬品の数がどれほどなのか、ということが書いてないので、判断しにくい。


(1)ある薬品の、最新の校正値を入れるセルを固定する。
毎日の校正値の入力について、決まったセルへ、セルを間違いなく、更新のデータ入力は大変だが、式は
=IF(A1>0,(25-(A1*Sheet2!A5)*5)/40,0)
のようになり、式の考え方は安定する。
(2)
  日付  | 校正値 |
------------------------------
1|2007/08/01 | 4.9459 |
2|2007/08/17 | 4.9423 |
のように最新のものは、最下行にあると見れるなら、式を作れるが
最終行を捉えるのは、意外に関数では難しい。
ユーザー関数で
Function lastV(a)
c = a.Column
lastV = Sheets("sheet2").Cells(65536, c).End(xlUp)
End Function
をつくり
=lastv(C1)
で値が取れる。Sheet1において。
式は
=IF(A1>0,(25-(A1*lastv(C1))*5)/40,0)

ただし日付ー校正値の2列が必要で、シートSheet2の列には限りあるのだが,、使えるかな。
    • good
    • 0

校正値というのを変更しない為には、最初のシートに日付を持たせないとダメだと思います。


更に校正値の表にある日付は常に新しい日付が入っていく想定とした場合です。

例えば、校正値の表がSheet2のA、B列にあるとして、

日付     校正値 
2007/7/31   4.9404
2007/8/01   4.9459
2007/8/17   4.9423
2007/9/01   4.0822

Sheet1 の

A1 に 2007/7/31
B1 に 0.3527
C1 に =IF(B1>0,(25-(B1*VLOOKUP(A1,Sheet2!A:B,2))*5)/40,0)

とし、A列の日付をずらし、B列は同じ数値、C列はコピーで試した場合

2007/07/31  0.3527  0.40719
2007/08/01  0.3527  0.40695
2007/08/15  0.3527  0.40695
2007/08/17  0.3527  0.40711
2007/08/27  0.3527  0.40711
2007/08/31  0.3527  0.40711
2007/09/01  0.3527  0.44503
2007/09/02  0.3527  0.44503

のようになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!