• ベストアンサー

日付が新しい数値を参照する。

いつもお世話になっております。 さて質問ですが、下に例を作成してみました。 現在は、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の数値は校正値が新しいものを参照するが、一度計算されたものは校正値が新しくなっても書き換えられない。 こういうものは作成可能ですか? ご教授願います。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

校正値というのを変更しない為には、最初のシートに日付を持たせないとダメだと思います。 更に校正値の表にある日付は常に新しい日付が入っていく想定とした場合です。 例えば、校正値の表が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 のようになります。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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の列には限りあるのだが,、使えるかな。

関連するQ&A