[[20260107102751]] 『タイムをif関数(多重)を用いて数字を表示させたい』(Bulls) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『タイムをif関数(多重)を用いて数字を表示させたい』(Bulls)

if関数(多重)について質問させていただきます。
タイムが1時間〜3時間40分に収まっていれば「7」と表示。
0時00分過ぎをカウント開始するので、出力値を気にしないでください。

ネットで検索してみましたが、解決策が見つからず…、投稿させていただきました。

=if(タイム>"1:00"*1,タイム<"3:40"*1,"7",if(タイム>"3:40",タイム<"5:40"*1,"8",if(タイム>"7:45"*1,タイム<"9:45","1",if(タイム>"9:45"*1,タイム<"11:45","2",if(タイム>"12:45"*1,タイム<"14:45","3",if(タイム>"14:45"*1,タイム<"16:45","4",if(タイム>"19:30"*1,タイム<"21:45","5",if(タイム>"21:45"*1,タイム<"0:00","6"))

間違っている箇所を教えていただけますか。

よろしくお願いいたします。

追伸
厚かましいですが、もっと簡略できるのであれば、教えていただけると嬉しいです。

< 使用 Excel:unknown、使用 OS:unknown >


>if(タイム>"1:00"*1,タイム<"3:40"*1,"7"
IF関数使用方法が不適切です。
比較演算も不適切。
タイムとは何ですか。
セルに名前でも付けているんですか。
参考です。
A1に時間が入力してあると仮定。
=IF(OR(A1>=TIME(1,0,0), A1<=TIME(3,40,0)), 7, "")

(?) 2026/01/07(水) 12:01:41


 既に指摘のある通り、
 • そもそものif関数の使い方から誤っています
 • タイムとは?
 →結論、何がしたいのか意味不明です。

 "1:00"*1は「*1することで数値(時刻)にキャストできる」
 という知識だけで書いているのでしょうが、最初から自分で記入するのに
 わざわざ一度文字列で書いてキャストしているのは意味不明です。
 既出のようにTIME関数などの「元から時刻として扱える」データを使用してください。

  If関数の引数は3つです。if(条件式,Trueの場合の値,Falseの場合の値)です。
 あなたの例では引数が4つあることになっています。
 • タイム>"1:00"*1
 • タイム<"3:40"*1
 • "7" ※ここを文字列にしているのも謎
 • if(…..

 そして第二引数は条件式ではありません。
 • タイム<"3:40"*1
 これはTrue/Falseを値として返す式でしかなく
 第二引数に書いている以上、その後のifの判定には使用できません

(Asa) 2026/01/07(水) 16:00:36


 (?)さん
 >=IF(OR(A1>=TIME(1,0,0), A1<=TIME(3,40,0)), 7, "")
だと論理式はTRUEにしかなりません
2条件を満たすならANDです

 複数の条件をIF関数で分岐する場合は
IF(論理式,値が真の場合,値が偽の場合)
値が偽の場合にIF関数をネストする
IF(論理式,値が真の場合,IF(論理式,値が真の場合,値が偽の場合))
複数の条件で分岐する場合の論理式は
比較条件が最も小さい値から順に大きい値
比較条件が最も大きい値から順に小さい値
で比較すると可能ですが
検索範囲(タイム)が昇順の対応表を作成して
VLOOKUP(検索値, 範囲, 列番号, [検索の型])
検索の型をTRUEにすると近似値で検索出来ます
(はてな) 2026/01/07(水) 16:09:04

(はてな)さんご指摘ありがとうございます。
全くその通りです。
質問者の数式の中に 0:00 があったのでここだけは OR に
しないといけないのでそのままの状態でした。
(?) 2026/01/07(水) 17:25:03

 こんな数式で行けそうな気がする。

 =LOOKUP(タイム+(タイム-"7:45"<0),{"7:45";"9:45";"11:45";"12:45";"14:45";"16:45";"19:30";"21:45";"24:00";"25:00";"27:40";"29:40"}*1,{1;2;"";3;4;"";5;6;"";7;8;""})

(半平太) 2026/01/08(木) 00:20:05


みなさん

指摘ありがとうございます。

もう一度、基本から勉強し直して作り直します。
(Bulls) 2026/01/08(木) 08:42:07


 既に保留扱いにされていますが、メモしておいたものを参考までに。

 (1) 
 今のものではエラーになると思いますが、そのエラーメッセージをどう解釈していますか?
 「この関数に対して、多すぎる引数が指定されています。」

 既に指摘があるように、IF関数の基本は、
 =IF(条件判定式, Trueの時の適用式, Falseの時の適用式)    :適用式には値を含む
 という形式です。
 (ただし、場合によっては、2番目や3番目の引数に、IF関数を使う、いわゆる「入れ子」にすることもできますが、
   基本的な構図は上記のとおりです。)

 あなたの式では、
 ・条件判定式が     タイム>"1:00"*1
 ・Trueの時の値が   タイム<"3:40"*1
 ・Falseの時の値が  "7"
 と解釈され、
 以下の、if(タイム>"3:40",・・・は、過剰な引数と判断されてエラーになります。
 IF関数の基本のところから間違っています。

 (2)またカッコの数が対応していません。質問の前にご自分で確認できるはずです。

 (3)質問にあたっては、使用しているExcelのバージョンを書いて下さい。
    使える関数が変わってきます。(例えば、こういう場合には IFSと言う関数も用意されています。)

 (4)何をしたいのかを他人にわかるように、コードではなく、日本語で箇条書きにすると双方で行き違いがありません。
  (コードは間違っていて頼りになりません。
    また、全て "<" か ">"になっていますが、ジャストのものはどうなんですか?)

 基本から復習することに賛成です。例えば、下記の記事も参考になるでしょう。

 IF 関数
https://support.microsoft.com/ja-jp/office/if-%E9%96%A2%E6%95%B0-69aed7c9-4e8a-4755-a9bc-aa8bbff73be2

 IF 関数 – 入れ子になった式と問題の回避
https://support.microsoft.com/ja-jp/office/if-%E9%96%A2%E6%95%B0-%E5%85%A5%E3%82%8C%E5%AD%90%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E5%BC%8F%E3%81%A8%E5%95%8F%E9%A1%8C%E3%81%AE%E5%9B%9E%E9%81%BF-0b22ff44-f149-44ba-aeb5-4ef99da241c8

(xyz) 2026/01/08(木) 14:21:54


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.