[[20250513145504]] 『if関数で10:00以上の値の際に適当な値が返らない』(勤怠ムリ) ページの最後に飛ぶ

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

| 全文検索 | 過去ログ ]

 

『if関数で10:00以上の値の際に適当な値が返らない』(勤怠ムリ)

よろしくお願いいたします。
過去ログ検索でも適当なワードを考えられなく、希望する回答が得られなかった為、回答又は、適当なスレをご教示いただけますと幸いです。
以下の関数
=IFERROR(IF(VLOOKUP(B15,勤務時間明細表!$B$1:$AF$372,19,FALSE)>="7:30","7:30",VLOOKUP(B15,勤務時間明細表!$B$1:$AF$372,19,FALSE)),"")
を設定した際に、9:59までは問題無く動作致しますが、10:00以降の時間になると、そのままの時間が表示されます(10:21の場合に7:30ではなく10:21と表示される)。
時間の後に*1と入力すると問題解決したかに見えて、7:29以下の際にも7:30と表示されてしまいます。
これの解決方法をよろしくお願いいたします。
ご不明な点がございましたら、お申し付けください。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


勤務時間明細表!$B$1:$AF$372 にどんな表なのか分からないと回答できないです
(定時で帰宅部係長) 2025/05/13(火) 17:01:13

 =IFERROR(MIN(Time(7,30,0),VLOOKUP(B15,勤務時間明細表!$B$1:$AF$372,19,FALSE)),"")
 みたいなことではどうでしょうか。
(xyz) 2025/05/13(火) 17:02:10

 文字列比較になっているのが原因でしょうね。
 私の案についても、VLOOKUPで表引きしたものが日付型になっていないとNGかもしれません。
(xyz) 2025/05/13(火) 17:07:16

定時で帰宅部係長様
ご返信ありがとうございます。
1A 4:38 / 12:19 7:41 0:25 0:10 0:35 3:44 1:06 4:50 1:21 1:21 6:46
全表は大きすぎるので1行だけですが、上記の6:46を拾うようにしてあります。

xyz様
ご返信ありがとうございます。
試してみましたが、10:00以上は問題なく動作致しましたが、7:30を割るものについては7:30と表示されます。
(勤怠ムリ) 2025/05/13(火) 17:19:58


 7:30分を割るもの、というのが文字列になっていないでしょうか。

(xyz) 2025/05/13(火) 19:04:56


xyz様
ご返信ありがとうございます。
vlookupの検索表が文字列なので、7:30以下の物も文字列だと思われます。
vlookupで引っ張ってきた数字をvalue関数で変換してみたのですが、特段の変化はありませんでした。
(勤怠ムリ) 2025/05/13(火) 19:54:34

>文字列だと思われます。
何故そう思うのですか。

(?) 2025/05/13(火) 20:06:42


?様
ご返信ありがとうございます。
元の表が文字列で出来ているので、参照先も文字列で表示されているのかな?という予想です。

皆様
ご返信ありがとうございました。
vlookupで持ってきた数字をvalue関数に掛けて、そこを参照するようにした所、概ね、目指していた挙動をするようになりました。全ての検証はまだやっておりませんが、これで問題無いハズです。
また、ダメそうでしたらご相談させて頂くかもしれませんが、その際はよろしくお願いいたします。
(勤怠ムリ) 2025/05/13(火) 20:18:34


 表引き結果が、文字列と日付型が混在しているなら、統一したほうがよいと思います。
 もし自動判別するとすれば、下記でしょうか。

 =LET(
     a,VLOOKUP(B15,勤務時間明細表!$B$1:$AF$372,19,FALSE),
     IFERROR(MIN(Time(7,30,0),IF(ISTEXT(a),TIMEVALUE(a),a)),"")
 )
 数式の1文字目のスペースは採ってください。

(xyz) 2025/05/13(火) 20:28:58


 VLOOKUPの戻り値が、文字列でもシリアル値でも
 結果はシリアル値になりました。

 =IFERROR(MIN("7:30",VLOOKUP(B15,勤務時間明細表!$B$1:$AF$372,19,FALSE)),"")
 
(かんたんレシピ) 2025/05/13(火) 21:18:42

 かんたんレシピさん、確認しました。ありがとうございます。

 ・= "7:30" < "10:00" は文字列の比較なので Falseとなる。(これは直ぐに分かりました)

 ・"7:30" と "10:00" を A1 ,B1に入れて(セル書式は文字列とします)
   =MIN(A1,B1) とすると 0 が返る   【数値を表すものが入ったセル範囲でないと数値と扱われない】

 ・=MIN("7:30","10:00") は正常に7:30を返す。【数値を表す文字列は、数値として扱われる】
 ということで、かんたんレシピさんの結論になるわけですね。

 # Excel君がどこまで気を回してくれるかは直感ではわからないですね。
 # その都度調べないと即断はできないですね。

(xyz) 2025/05/14(水) 09:52:20


コメント返信:

[ 一覧(最新更新順) ]


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