• 締切済み

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

「就業時間基本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」判定とは出てくれません。 どなたか、正しい判定方法を教えてください。

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

先ほどポストしたコードでも間違いではありませんが、 より正しくは以下です。 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

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

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