
例えば宅配便の配達希望時間を羅列した表があって、「20:00以降は“夜間配達”」と戻したいとき、IF関数を使用すると思います。
解説書によると、IFの式の条件には時刻の表示形式は使えないので「”」で囲み、「1」をかける。これで時刻表示がシリアル値になるため設定が早くなる。
とあるのですが、これだけでは意味がわからず質問させていただきました。下記の2点ほどご教示いただければ助かります。
(1)どうしてIFのの条件に時刻の表示形式は使えないのか?他の関数には使えるような気がするのですが。
(2)「”」で囲むのはなんとなくわかるとして、なぜ「1」をかけるのか。
シリアル値の知識(時刻の場合24時間を1で管理する)は一応あります。
No.1ベストアンサー
- 回答日時:
(1)IFの関数というより、数式に時刻を使用することができないのではないでしょうか?
これは想像するに、時刻表示には「:」(コロン)を使いますが関数では「:」は範囲を指定する時に使用しますよね(例:A1:A10)。ですから数式に時刻の「:」を認めると範囲指定なのか、時刻なのか、収拾がつかなくなってしまいそうです。
(2)””で囲んで1を掛ける、についてですが。
””で囲むと文字列として認識されますよね。しかし””の中が本来数値ならば1を掛けることによって、文字列ではなく数値として認識されることになります。そのために1を掛けて数式として成り立つようにするのです。
想像の部分もあり間違ってたらすいません。
この回答への補足
わかりやすい解説ありがとうございました。よーくわかりましたが、(2)でもう1点できたらお伺いしたいことがありまして。その前に・・・
(1)時刻を数式に入れても計算できると誤った認識を持っていたようです。IFに限らず、数式に時刻は使用できないのですね。それからなるほど「:」は範囲指定にも使われていますね。納得です。
(2)ためしに””で囲んで1を掛けずにやってみましたところ、空白となり答はでてきませんでした。””で囲んで1を掛けてやると、無事正解が出てきました。
ここでさらなる疑問が・・・””で囲んで1を掛けることによって、文字列ではなく数式として認識されるようになるのはどういう仕組みなのでしょう。理論などなく、ただ覚えておくといったたぐいのものでしょうか?
何度も申し訳ないのですが、よろしくお願いできれば幸いです。
No.3
- 回答日時:
私が過去の解答で何度も言っていることの、エクセル関数の本質に係わることの、私見を述べます。
>どうしてIFのの条件に時刻の表示形式は使えないのか
IF関数は、エクセルの「関数」です。関数の中で扱う番地は、番地のセルに入っている「値」を問題にしているものです。一部の番地以外の引数も値を問題にしてます。
書式やコメントやセルに付随するデータ(情報)は、色々あるのですが、その中の「値」(Value)だけを問題にします。それに伴って、IFも値を聞く風になっています。TRUE、FALSEも各ソフトや言語で値が決まっています。
(エクセルの将来バージョンでは、書式も聞けるようにMS社はするかも知れないが、プログラムなども関数は値を返すのがいまは主流か。)
表示形式で変換している見た目の状態は、「値」ではありません。特に日付、時刻で相違が顕著です。
時刻もエクセルは24時間を1とする値で持ってますから
値で聞かないとなりません。
更に聞くなら、12時間を0.5と聞くので無く、もう少し時間らしく表現できないかと言う質問はありえます。
それは"12:00"です。0.5を12時と名前をつけておく方法とかもありそう。
>後半
=1+"12:00"
をやって見てください。1.5になりました。
*1しなくても良いようです。
エクセルの中で変換してくれていると考えなくても良いのでは。"12:00"で0.5と言う数値と扱うで良いのではないでしょうか。*1しても結果は変わらないのですが。
No.2
- 回答日時:
こんにちは。
maruru01です。No.1の方の補足になりますが。
>(2)「”」で囲むのはなんとなくわかるとして、
>なぜ「1」をかけるのか。
EXCELは、数値として認識出来る文字列を、四則演算の中に入れてやると、自動的に数値に変換してくれます。
時刻も、シリアル値という数値なので、四則演算の中に入れてやれば、数値に変換されます。
その数値に変換する方法の1つが「1を掛ける」ということです。
つまり、
"20:00"*1
ということです。
で、要点は値を変化させずに四則演算してやればいいわけですから、
"20:00"/1
"20:00"+0
"20:00"-0
--"20:00"
でもいいわけです。
(「--」は「(-1)*(-1)」、つまり-1を2回掛けるということです。)
さらに、関数を使用して、
VALUE("20:00")
TIMEVALUE("20:00")
でも出来ます。
(ただし、TIMEVALUEは24時間超には対応出来ません。)
ちなみに、
=IF(A1>"20:00","夜間配達","")
はだめですが、
=IF(A1-"20:00">0,"夜間配達","")
なら、うまくいきます。
これは先にA1との引き算(四則演算)をして数値(シリアル値)に変換されるからです。
>他の関数には使えるような気がするのですが。
少なくとも、「""」で括らずに使える関数はないはずです。
数式の手入力はもちろん、関数パレット上でも、
「"20:00"」
のようにしないとだめだと思います。
で、この場合は関数が自動的に数値(シリアル値)に変換してくれます。
解説ありがとうございます。
No.1さんにさらに、理論的にどうして「1」を掛けると数値として認識されるのかご質問させていただいたのですが、お答えいただいた下記の部分が少しヒントになりました。
>ちなみに、
=IF(A1>"20:00","夜間配達","")
はだめですが、
=IF(A1-"20:00">0,"夜間配達","")
なら、うまくいきます。
これは先にA1との引き算(四則演算)をして数値(シリアル値)に変換されるからです。
>要点は値を変化させずに四則演算してやればいいわけですから、
"20:00"/1
"20:00"+0
"20:00"-0
--"20:00"
でもいいわけです。
なるほど!そうですね。大変勉強になりました。お世話になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 出退勤管理の遅刻・早退時間について 3 2023/08/10 15:33
- その他(教育・科学・学問) エクセル関数について 2 2022/12/23 08:59
- Excel(エクセル) 出退勤管理の早退時間について 4 2023/08/21 15:22
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Excel(エクセル) エクセルの数式について教えて下さい。 8 2023/05/27 12:17
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Excel(エクセル) 下記エクセルの式がなぜこうなるのか理由が知りたいです。 6 2022/08/20 00:43
- Excel(エクセル) エクセルの関数に関しての質問です。 5 2022/10/07 11:17
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- 仕事術・業務効率化 IF関数で時間指定をして、数値を切り上げたいです 1 2022/05/01 23:37
このQ&Aを見た人はこんなQ&Aも見ています
-
IF関数で、時間を条件にしたい場合の式について
Access(アクセス)
-
エクセルで表示形式の時刻の「0:00」を表示しないようにするには?
Excel(エクセル)
-
エクセルで時間の判定をしています。0時以上5時以下の場合は○と判定したいので、以下のイフ関数を試しま
Excel(エクセル)
-
-
4
[IF文] 「何時〜何時」で該当する時間を表示したい お疲れ様です。お知恵をお借りできればと思います
Excel(エクセル)
-
5
31:30:00が1900/1/1 7:30:0
その他(Microsoft Office)
-
6
IF文に時間(何時から何時まで)の条件文を付けたい
Word(ワード)
-
7
【Excel】セル内の時間帯が特定の時間帯に含まれるかの判定
Excel(エクセル)
-
8
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
-
9
ある一定時間を超えた場合の超えた時間のみを合計する方法をご存知でしたら
Excel(エクセル)
-
10
エクセル関数/10進法から60進法への変換(カンマ表示)
Excel(エクセル)
-
11
時間を「昼間」と「夜間」に分けて表示させたい。
Excel(エクセル)
-
12
エクセル関数 時間の一覧で時間範囲を条件に抽出入力
Excel(エクセル)
-
13
時間範囲(午前/午後/夜間)のIF関数について教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
値が入っているときだけ計算結...
-
至急!尿検査前日にオナニーし...
-
VLOOKUP関数を使用時、検索する...
-
【Excelで「正弦波」のグラフを...
-
MIN関数で空白セルを無視したい...
-
EXCELで式からグラフを描くには?
-
検便についてです。 便は取れた...
-
リンク先のファイルを開かなく...
-
ある範囲のセルから任意の値を...
-
2つの数値のうち、数値が小さい...
-
尿検査の前日は自慰控えたほう...
-
小数点以下を繰り上げたものを...
-
一番多く表示のある値(文字列...
-
Excel 数値の前の「 ' 」を一括...
-
風俗店へ行く前のご飯
-
値が入っている一番右のセル位...
-
EXCELで条件付き書式で空白セル...
-
彼女のことが好きすぎて彼女の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
イタリアから帰国する際、肉製...
-
2つの数値のうち、数値が小さい...
-
健否~書類の書き方~
-
VLOOKUP関数を使用時、検索する...
-
値が入っているときだけ計算結...
-
小数点以下を繰り上げたものを...
-
エクセルで空白セルを含む列の...
-
EXCELで条件付き書式で空白セル...
-
リンク先のファイルを開かなく...
-
ある範囲のセルから任意の値を...
-
精子に血が・・・
-
エクセルで数式の答えを数値と...
-
風俗店へ行く前のご飯
-
エクセル指定した範囲からラン...
-
一番多く表示のある値(文字列...
-
Excel 数値の前の「 ' 」を一括...
-
ワードのページ番号をもっと下...
-
MIN関数で空白セルを無視したい...
おすすめ情報