• ベストアンサー

エクセル関数について

エクセル2000を使用しています。例えばA1にタイム(○分○秒)を入力するとします。B1に計算式として、A1が5分を超えた場合-5点とし、以後30秒を超える毎に-5点ずつ減点する式を教えてください。5分10秒なら-5点、5分40秒なら-10点というようにです。

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

  • ベストアンサー
回答No.3

=-5*MAX(0,ROUNDUP((A1*2880-10),0)) でどうでしょうか? 私のも一応解説しますと、 A1セルの値を24*60*60=86400で掛けると秒になります。 (#1さんの"00:01.00"で割っているのと同じ事だと思います。) =ROUNDUP((A1*24*60*60-5*60)/30,0)で 5分を引いて30秒で割って小数点以下を切り上げします。 =-5*MAX(0,ROUNDUP((A1*24*60*60-5*60)/30,0))で それと0を比較し大きい方の値に-5を掛けます。 (5分以下の場合は負の数になるので0が取られます) 後は、計算式を簡単にして上記の式になっています。 (考え方は#1さんと同じで、計算式を簡単にしただけだと思います。) 後で見直したときに分かりにくいので#1さんや私の最後の式の方が、 後々のメンテはしやすいと思います。 後、この数式を入力すると書式設定が「日付」に変わってしまうと思うので 「標準」に直してください。 (私のだけかもしれませんが・・・)

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

こういう段階型のエントリの値取得のパターンはVLOOKUPのFALSE型が良いでしょう。 (テーブル) D1:E6に 0:00 0 5:00 -5 5:30 -10 6:00 -15 6:30 -20 7:30 -25 を作る。時刻を表す「:」を使ってD列を作ること。 B1に関数式=VLOOKUP(A1,$D$1:$E$6,2,TRUE)を入れる $をつけること、TRUE型であること、表の最左列について 昇順であること。 表を別シートにも出来ます。 (テスト) (A列) (B列) 5:01 -5 5:35 -10 3:00 0 6:20 -15 5:40 -10 5:10 -5 表の第1列は、エクセルの時刻値で、24時間を1とする 「数値」に過ぎないことを想起して下さい。 HLOOKUPでもテーブル・式は変わるものの、可能でしょう。

回答No.1

A1が時刻だとすると、A1/"00:01.00"が秒に換算した数値になります ので、それをふまえて =-5*ROUNDUP((MAX(A1/"00:01.00", 300)-300)/30, 0) とします。

関連するQ&A