Excel。TIMEVALUE関数は時刻を表す文字列をシリアル値に変換します。
<関数辞典:TIMEVALUE関数>
TIMEVALUE関数
読み方: タイムヴァリュー
分類: 日付時刻
TIMEVALUE(時刻文字列)
時刻を表す文字列をシリアル値に変換する
【Excel・Word・PowerPoint・Access】あなたの「困った」を解決!10年以上の経験が詰まった、現場の疑問から生まれた実践テクニック集。作業効率を劇的に上げるOffice活用術をお届けします。
TIMEVALUE関数
読み方: タイムヴァリュー
分類: 日付時刻
TIMEVALUE(時刻文字列)
時刻を表す文字列をシリアル値に変換する
次の表は、ランニング成績の表です。
E列には、経過した時間。
=D2-C1
という数式が設定されています。
オートフィルで数式をコピーして、E5まで求めた表です。
そして、F列には、1時間以内なら○と表示する数式を設定してみました。
F2の数式は、
=IF(E2<="1:00","○","×")
オートフィルで数式をコピーしてみると、結果がおかしなことがわかります。
全部「○」になっています。
IF関数をつかっていて、論理式は、「E2<="1:00"」と、「1時間以内なら」という条件にしたはずなのですが、うまくいっていません。
「E2<="1:00"」の「”(ダブルコーテーション)」が邪魔なのかと思い、消した数式、
=IF(E2<=1:00,"○","×")
にしてみると、
エラーが表示されます。
そこで、数式タブにある、数式の検証をつかって、確認してみましょう。
クリックすると、数式の計算ダイアログボックスが表示されます。
時間は、Execlの場合シリアル値に戻りますので、0.05となっています。
検証ボタンをさらにクリックして、進めてみると、
”1:00”は、シリアル値にかわることなく、文字として扱われていることが確認できます。
“1:00”は、文字扱いになっていますから、当然、”1:00”という文字よりも、数値の方が小さい扱いになるので、すべて「○」になってしまったというわけです。
”1:00”をどうにか、時間に変換することができれば、解決できるわけです。
そこで、登場するのが、TIMEVALUE関数です。
=IF(E2<=TIMEVALUE("1:00"),"○","×")
オートフィルで数式をコピーしてみると、正しい結果を求めることができました。
このTIMEVALUE関数は、
もし、時間を使った計算で、結果が正しくない場合には、文字になっていないか、文字になっていたら、TIMEVALUE関数をつかってみて確認してみるといいかもしれませんね。
今回は、TIME関数~TOROW関数までをご紹介しております。
TIME関数
読み方: タイム
TIME(時,分,秒)
指定した時刻を算出します
TIMEVALUE関数
読み方: タイムヴァリュー
TIMEVALUE(時刻文字列)
時刻を表す文字列をシリアル値に変換する
TINV関数
読み方: ティーインバース
TINV(確率,自由度)
t分布の両側確率から上側の確率変数を算出します
TOCOL関数
読み方: トゥカル
読み方: トゥカラム
TOCOL(array,[ignore],[scan_by_column])
配列を1つの列として返します
TODAY関数
読み方: トゥデイ
TODAY()
現在の日付を算出します
TOROW関数
読み方: トゥロウ
TOROW(array,[ignore],[scan_by_column])
配列を1つの行として返します
時刻や時間がある帳票で、判断などするために、例えばIF関数を使おうとした場合、TIMEVALUE関数をつかわないと、効率的に算出することができません。
そうでなければ「×」と算出したいので、IF関数をつかいます。
D2に設定した数式は、
=IF(C2<=TIMEVALUE("1:00"),"○","×")
C2の時間が、1時間以内なのかを判断させるために、「TIMEVALUE("1:00")」とTIMEVALUE関数をつかっています。
TIMEVALUE関数は、文字で表示された時刻をシリアル値(日付時刻型)に変えることができる関数です。
なぜ、TIMEVALUE関数をつかうのかというと、「1:00」と設定すると、文字列として判断されてしまうので、思っているように判断してくれません。
例えば、
D2の数式を、
IF(C2<=1:00,"○","×")
というように、変更したらどうなるかというと、エラーが表示されて算出できません。
=IF(C2<="1:00","○","×")
と「”(ダブルコーテーション)」で囲ってみると、算出はされますが、不正解が算出されてしまいます。
このように、IF関数などで、時刻や時間をつかった、数式を設定する場合には、「型」ということも含めて、考えないと上手くいかないかもしれません。
オリンピック予選や国体など予選タイムというのがあったりして、それを突破しないと上位進出できません。
そこで、予選突破タイムを越えたら人がわかる表を作りたいとします。
それが、次の表。
その時間がB1の予選クリア時間よりも少なければ「突破」と表示しています。
C4の数式を確認してみましょう。
=IF($B$1>B4,"突破","")
設定した数式をオートフィルで数式をコピーしていますが、特に問題はありません。
この場合、セル番地をつかった比較をしていますよね。
何気ないことですが、B1を使用せずに、
=IF(0:15:30>B4,"突破","")
と、直接手入力で論理式をつくってみると、トラブルが発生します。
では、試しに、D4に
=IF(0:15:30>B4,"突破","")
という数式を設定してみましょう。
ある動きが見えるので、できれば、数式は手入力で作成してみるといいですよ。
そして確定すると…メッセージが表示されます。
ならば、「””」(ダブルコーテーション)で囲ってみましょう。
=IF(“0:15:30”>B4,"突破","")
メッセージは表示されなかったので、オートフィルで数式をコピーしてみると、算出できていないことが判明します。
その原因は、"0:15:30"。
「””」(ダブルコーテーション)をつけたことで、文字型と判断されてしまいます。
B列は、時間=数値(シリアル値)なので、文字と数値を比べると当然、数値は小さいので、条件が成立してしまったわけです。
このようなことから、セル番地に比較したい時間を設定しておき、IF関数などを使うと、簡単に判定することができるわけです。
なお、どうしても、セル番地が使えない場合などがある時には、TIMEVALUE関数を使うことで、対応することが可能です。
D4の数式を修正します。
=IF(TIMEVALUE("0:15:30")>B4,"突破","")
オートフィルで数式をコピーしてみましょう。
このTIMEVALUE関数。一つだけ注意点があります。
それは、引数。「かっこの中」。
時間や日付について、Excelは少々トラブルケースが発生しやすいので、気を付ける必要がありますね。