• 締切済み

さらに問題があります

『「就業時間基本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」判定とは出てくれません。 どなたか、正しい判定方法を教えてください。』 に対して、 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 で確かに= =getCode(C) でC列から「判定」ができりことはわかりました。 もう一点さらに困っている点があります。 2018年2月 A B・・・・・C      1(金)   5:45 2(土)   5:15 と土曜だけ最大5:15が最大時間となります。 土曜日だけを判定し直すのはどうやったら良いのでしょうか? 曜日を返す変数も入れなければなりません。これも困っているのです。   

みんなの回答

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.4

一部訂正 誤:添付の図ではF2:G4に判定用の表を作り、セルC2に以下の式を入れて下にコピーしています。 ↓ 正:添付の図ではF2:G4に判定用の表を作り、セルD2に以下の式を入れて下にコピーしています。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.3

大元の質問へのリンクが無いので前提が良く解りませんが、なぜセル関数でやらないのでしょう? 添付の図ではF2:G4に判定用の表を作り、セルC2に以下の式を入れて下にコピーしています。 =IFERROR(IF((WEEKDAY(A2)=7)*(C2>=1*"5:15"),"A",VLOOKUP(C2,$F$2:$G$4,2)),"")

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

なにやら 『「就業時間基本5:30」なら「A」判定 という条件に加え 「5:45」の条件と「5:15」の条件が増えているように読み取れます。 土曜日以外と土曜日での 判定条件をそれぞれ示してみてください。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>土曜日だけを判定し直すのはどうやったら良いのでしょうか? 土曜日の条件を付け加えれば良いでしょう 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(5, 15, 0) And _    MyTime.Offset(, -1).Value Like "*土*" 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

関連するQ&A