ラベル timevalue関数 の投稿を表示しています。 すべての投稿を表示
ラベル timevalue関数 の投稿を表示しています。 すべての投稿を表示

3/06/2025

Excel。時間の大小比較の結果がおかしいんです。どう対応したらいいの。【Comparison】

Excel。時間の大小比較の結果がおかしいんです。どう対応したらいいの。

<IF+TIMEVALUE関数>

次の表は、ランニング成績の表です。

時間の大小比較の結果がおかしいんです。どう対応したらいいの。

C列がスタート時間で、D列には、ゴールした時間が入力されています。


E列には、経過した時間。

=D2-C1

という数式が設定されています。


オートフィルで数式をコピーして、E5まで求めた表です。


そして、F列には、1時間以内なら○と表示する数式を設定してみました。


F2の数式は、

=IF(E2<="1:00","○","×")


オートフィルで数式をコピーしてみると、結果がおかしなことがわかります。


全部「○」になっています。


IF関数をつかっていて、論理式は、「E2<="1:00"」と、「1時間以内なら」という条件にしたはずなのですが、うまくいっていません。


「E2<="1:00"」の「”(ダブルコーテーション)」が邪魔なのかと思い、消した数式、

=IF(E2<=1:00,"○","×")

にしてみると、

エラーが表示されます。


何が原因なのでしょうか。


そこで、数式タブにある、数式の検証をつかって、確認してみましょう。


数式の検証は、数式の途中結果などの状況を確認することができるツールです。


クリックすると、数式の計算ダイアログボックスが表示されます。


検証ボタンをクリックすると、1ステップずつ、計算されます。


時間は、Execlの場合シリアル値に戻りますので、0.05となっています。


検証ボタンをさらにクリックして、進めてみると、

”1:00”は、シリアル値にかわることなく、文字として扱われていることが確認できます。


“1:00”は、文字扱いになっていますから、当然、”1:00”という文字よりも、数値の方が小さい扱いになるので、すべて「○」になってしまったというわけです。


”1:00”をどうにか、時間に変換することができれば、解決できるわけです。


そこで、登場するのが、TIMEVALUE関数です。


まずは、先程の数式に、TIMEVALUE関数を追加して修正してみます。


=IF(E2<=TIMEVALUE("1:00"),"○","×")


オートフィルで数式をコピーしてみると、正しい結果を求めることができました。


このTIMEVALUE関数は、


文字列で表示された時刻をシリアル値に変換してくれる関数です。


もし、時間を使った計算で、結果が正しくない場合には、文字になっていないか、文字になっていたら、TIMEVALUE関数をつかってみて確認してみるといいかもしれませんね。

8/07/2023

Excelの様々な関数の読み方や引数などを紹介。今回は、TIME関数~TOROW関数です。【dictionary】

Excelの様々な関数の読み方や引数などを紹介。今回は、TIME関数~TOROW関数です。

<Excel関数辞典:VOL.83>

今回は、TIME関数~TOROW関数までをご紹介しております。

Excel関数辞典

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つの行として返します 

1/26/2023

Excel。条件の数式で、時刻で使うと正しい結果を表示しないのでどうしたらいい。【Times of Day】

Excel。条件の数式で、時刻で使うと正しい結果を表示しないのでどうしたらいい。

<TIMEVALUE関数>

時刻や時間がある帳票で、判断などするために、例えばIF関数を使おうとした場合、TIMEVALUE関数をつかわないと、効率的に算出することができません。


C列の時間が、1時間以内ならば、「○」。

そうでなければ「×」と算出したいので、IF関数をつかいます。


D2に設定した数式は、

=IF(C2<=TIMEVALUE("1:00"),"○","×")


C2の時間が、1時間以内なのかを判断させるために、「TIMEVALUE("1:00")」とTIMEVALUE関数をつかっています。


TIMEVALUE関数は、文字で表示された時刻をシリアル値(日付時刻型)に変えることができる関数です。


なぜ、TIMEVALUE関数をつかうのかというと、「1:00」と設定すると、文字列として判断されてしまうので、思っているように判断してくれません。


例えば、

D2の数式を、

IF(C2<=1:00,"○","×")

というように、変更したらどうなるかというと、エラーが表示されて算出できません。


また、D2の数式を、

=IF(C2<="1:00","○","×")

と「”(ダブルコーテーション)」で囲ってみると、算出はされますが、不正解が算出されてしまいます。


C2が1時間をオーバーしているにも関わらず、判定結果が「○」ということで、1時間以内の判定になっています。


このように、IF関数などで、時刻や時間をつかった、数式を設定する場合には、「型」ということも含めて、考えないと上手くいかないかもしれません。

1/05/2021

Excel。IF関数。時間の判定はセル番地をつかうことをおススメします。【TIMEVALUE】

Excel。IF関数。時間の判定はセル番地をつかうことをおススメします。

<IF関数・TIMEVALUE関数>

オリンピック予選や国体など予選タイムというのがあったりして、それを突破しないと上位進出できません。

そこで、予選突破タイムを越えたら人がわかる表を作りたいとします。


それが、次の表。


ある大会の予選突破確認の表で、B列の時間が参加者の時間です。

その時間がB1の予選クリア時間よりも少なければ「突破」と表示しています。


C4の数式を確認してみましょう。

=IF($B$1>B4,"突破","")


設定した数式をオートフィルで数式をコピーしていますが、特に問題はありません。


この場合、セル番地をつかった比較をしていますよね。

何気ないことですが、B1を使用せずに、

=IF(0:15:30>B4,"突破","")

と、直接手入力で論理式をつくってみると、トラブルが発生します。


では、試しに、D4に

=IF(0:15:30>B4,"突破","")

という数式を設定してみましょう。


ある動きが見えるので、できれば、数式は手入力で作成してみるといいですよ。


入力途中で、「0:15:30」と入力したら、範囲選択し始めましたが、そのままIF関数を作っていきます。

そして確定すると…メッセージが表示されます。


どうやら、先程の「0:15:30」は、15行目から30行目を範囲選択と勘違いしたようです。


ならば、「””」(ダブルコーテーション)で囲ってみましょう。

=IF(“0:15:30”>B4,"突破","")


メッセージは表示されなかったので、オートフィルで数式をコピーしてみると、算出できていないことが判明します。


なんと、すべてに「突破」という文字が表示されてしまいました。


その原因は、"0:15:30"。

「””」(ダブルコーテーション)をつけたことで、文字型と判断されてしまいます。

B列は、時間=数値(シリアル値)なので、文字と数値を比べると当然、数値は小さいので、条件が成立してしまったわけです。


このようなことから、セル番地に比較したい時間を設定しておき、IF関数などを使うと、簡単に判定することができるわけです。


なお、どうしても、セル番地が使えない場合などがある時には、TIMEVALUE関数を使うことで、対応することが可能です。


D4の数式を修正します。

=IF(TIMEVALUE("0:15:30")>B4,"突破","")

オートフィルで数式をコピーしてみましょう。


このように、セル番地を使った場合と同じように、判定結果を算出することができました。


このTIMEVALUE関数。一つだけ注意点があります。

それは、引数。「かっこの中」。


「時刻文字型」と指示されていますので、「””」(ダブルコーテーション)で時間を囲ってあげる必要があります。


時間や日付について、Excelは少々トラブルケースが発生しやすいので、気を付ける必要がありますね。

2/16/2020

Excel。時間の条件分岐はTIMEVALUE関数を使うのが便利です。【TIMEVALUE】

Excel。時間の条件分岐はTIMEVALUE関数を使うのが便利です。

<TIMEVALUE関数>

作業時間が、時間以内に終了しているならば、「○」時間を超過しているならば、「タイムオーバー」というような判断分岐をする場合、意外と落とし穴があるので確認しておきましょう。

次の表を用意しました

D列の所要時間は、終了時間から開始時間を減算した結果を表示してあります。
数式は、
=C2-B2
ですね。

時間以内に終了しているならば、「○」時間を超過しているならば、「タイムオーバー」という判断分岐をしたいので、当然IF関数を使うわけですね。

0:50を超過していたらということを論理式に設定しますので、
D2<=0:50
と設定してみると、正しくありませんと表示されてしまいます。

一応、OKボタンをクリックしてみると、

問題があると、冷たい反応…
どうやら文字として認識しようとしています。

では、次のように数式を修正してみるとどうでしょうか?

論理式を、
D2<="0:50"
としました。「”(ダブルコーテーション)」で0:50を囲んでみました。

今度は、うまくいきそうな感じがしますので、OKボタンをクリックして、数式をオートフィルでコピーしてみましょう。

成功したと思ったら、なんと、50分オーバーしているところも「○」が表示されてしまっています。

どうしてでしょう?

ここに落とし穴があるわけです。

そもそも、時間通しを減算していますので、算出されているD列の値は、時間なわけです。

Excelは、1日を1としたシリアル値を使っていますから、例えばExcelで1時間は1/24ということになります。

今回算出されているD列も、表示形式を標準にしてみましょう。

1以下なのが本来の姿です。

そして、”0:50”としたことで、文字列になっています。

文字と数値では数値の方が文字コード上小さいので、IF関数の結果、すべて「○」になってしまったわけです。

【TIMEVALUE関数を使うと問題解決】

問題なのは、文字型なのと時刻型という「型」が異なっているのが原因です。

そこで、TIMEVALUE関数を使うと、時刻型とすることができるので、問題を解決することができます。

では、IF関数を修正していきます。

論理式を次のようにTIMEVALUE関数を使って修正します。
D2<=TIMEVALUE("0:50")

OKボタンをクリックしたら、オートフィルで数式をコピーしましょう。

今回は、50分超過しているデータは、「タイムオーバー」と表示されていることが確認できました。

今回のように、日付や時間を使うときには、Excelであっても、Access同様に「型」を意識して数式を作る必要がありますので、算出結果がおかしな時には、「型」を確認するといいのかもしれませんね。

6/01/2016

Excel。TIMEVALUE。IF関数で時間内かどうかの判断をしたら、おかしな結果になるのでどうしよう。


Excel。IF関数で時間内かどうかの判断をしたら、おかしな結果になるのでどうしよう。

<IF+TIMEVALUE関数>


MOS(マイクロソフト オフィス スペシャリスト)の試験を受けるときには、
その模擬問題をやってから挑戦していただくのですが、
その模擬試験の管理する表を作成していて、
模擬試験時間内に終わったのかどうかの判断をしようとしたら、ちょっと苦労するのと、
さらに判断がおかしいし…

ということで、

今回は、時間内なのか?
それとも、タイムオーバーなのか?を判断する表を作るときの注意点を書いていきます。

では、下記の表があります。

このように作りたいわけですね。

F列は、E列の所要時間と比べて、50分以内なら、時間内。
そうでなかったら、タイムオーバーと表示する数式をF列に作っております。

では、F5をクリックして、IF関数ダイアログボックスを表示しましょう。

論理式には、50分以内なので、E5<=0:50 なんか、正しくありません。と表示されていますが、
先へいきましょう。
真の場合には、”時間内”
儀の場合には、”タイムオーバー”
として、OKボタンを押してみると…

エラーとなりましたね。

数式には、直接時刻を入力することが出来ないので、正しくないとExcelがいってきた訳ですね。

では、どうしたらいいのか?というと、
”0:50”とダブルコーテーションで囲んであげる必要があります。

そうすることで、文字型になるので、数式で使うことが出来るのです。

ですので、論理式を、E5<=”0:50”と修正してみましょう。

数式は、
=IF(E5<="0:50","時間内","タイムオーバー")
となりますので、オートフィルを使って数式をコピーします。

これで完成。と思ったら…。

なんと、全部判断が時間内になっているではありませんか!
50分以内なはずなのに?

この原因は、先ほどのダブルコーテーション。
これを付けたら文字になったわけですよね。

E列の数値よりも当然大きいわけですね。

E5は、0:49と49分に見えますが、実際のデータとしては、0.0340278 ですから。

つまり1以下。

当然文字よりも小さい数値なので、”時間内”という結果が算出されるというわけです。

では、どうしたらいいのでしょうか?
そこで登場するのが、救世主。

TIMEVALUE関数

なのです。

この関数は、文字列になっている時刻を、本来の時刻に変換してくれる関数なのです、
しかも表示は時刻表示形式にしてくれるのです。

つまり、時間どうし比較できるようになるのです。

では、数式を修正していきましょう
F5の数式

=IF(E5<="0:50","時間内","タイムオーバー")

=IF(E5<=TIMEVALUE("0:50"),"時間内","タイムオーバー")

と修正して、オートフィルで数式をコピーしてみましょう。

今度は、ちゃんと、判断されて、タイムオーバーが表示されましたね。

このように、時間をつかった比較判断の場合には、
TIMEVALUE関数を使ってあげるといいかもしれませんね。