締切済み

Excel関数で出した時間を判定したい

  • すぐに回答を!
  • 質問No.9579646
  • 閲覧数144
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 12% (5/41)

「就業時間基本5:30」なら「A」判定
「就業時間基本2:45」以上「5:29」なら「B」判定
「就業時間基本1:00」以上「2:44」ならば「C」判定
「修行時間基本1:00」未満なら「空白」
と判定させたいです。「就業時間基本」はワークシート関数で求めています。
例えば、2月1日から2月28日まで、VBAを使って「判定する」ならどうすれば良いでしょうか?
基本時間 If 関数で2:45 以上 5:29 「B」 判定としようとすると、おそらくは「シリアル値の問題」で簡単に「B」判定とは出てくれません。
どなたか、正しい判定方法を教えてください。

回答 (全2件)

  • 回答No.2

ベストアンサー率 60% (165/275)

Visual Basic カテゴリマスター
先ほどポストしたコードでも間違いではありませんが、
より正しくは以下です。

Option Explicit

Function getCode(MyTime As Range) As String
 Dim wsTime As Date
 wsTime = MyTime.Value - Int(MyTime.Value)
 If wsTime = TimeSerial(5, 30, 0) Then
  getCode = "A"
 ElseIf ((wsTime >= TimeSerial(2, 45, 0)) And _
     (wsTime < TimeSerial(5, 30, 0))) Then
  getCode = "B"
 ElseIf ((wsTime >= TimeSerial(1, 0, 0)) And _
     (wsTime < TimeSerial(2, 45, 0))) Then
  getCode = "C"
 ElseIf wsTime < TimeSerial(1, 0, 0) Then
  getCode = ""
 Else
  getCode = ""
 End If
End Function
  • 回答No.1

ベストアンサー率 60% (165/275)

Visual Basic カテゴリマスター
VBAである必要があるか疑問ですが
添付画像を例に、次のような関数でいかがでしょうか?

Option Explicit

Function getCode(MyTime As Date) As String
 Dim wsTime As Date
 wsTime = MyTime - Int(MyTime)
 If wsTime = TimeSerial(5, 30, 0) Then
  getCode = "A"
 ElseIf ((wsTime >= TimeSerial(2, 45, 0)) And _
     (wsTime < TimeSerial(5, 30, 0))) Then
  getCode = "B"
 ElseIf ((wsTime >= TimeSerial(1, 0, 0)) And _
     (wsTime < TimeSerial(2, 45, 0))) Then
  getCode = "C"
 ElseIf wsTime < TimeSerial(1, 0, 0) Then
  getCode = ""
 Else
  getCode = ""
 End If
End Function
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ