2016-06-02 8 views
-1

を使用して時間間隔を作成アイムいくつかのドライバデータログの時間で構成されたデータとの時間を持っている(24時間形式)例:エクセルVB

Name  Time in  Time Out 

Frank  5:30  7:55 

      11:35  16:35 

      17:24  19:20 

、このデータについての私はに処理するために、いくつかの問題を持っていますこの

result

ような何か私はこのようなデータの数百を持っているので、どのようにエクセルVBを使用して結果にそのようなデータを処理するには?ありがとう

+1

ExcelであるVBAを使用することができます。マクロを作成するオプションが用意されています。そして、あなたの現在の状況では、時間データを解析する何かが細胞に必要となります。あなたのイメージから、あなたは数時間についての情報を必要とし、開始終了時から背景色と境界線を現在のセルに設定します。 –

+1

データをループして「時間」機能を使用してセルの位置を取得し、その範囲に色を付けることができます。 – MutjayLee

+1

ちょっとしたことに:私はあなたがデータを扱う/表示する方法が好きです。グラフの「5時に来た」という5時30分の番組と、16時35分から17時24分のほぼ1時間も全く表示されません。だから、一度人々があなたのグラフの弱点を知ると、一人一人は一日中 "in"だったかのように見えるかもしれませんが、実際には2時間30分そこにとどまっていました:5時30分6時10分7時: 30 out 8:10 in 9:30 out 10:10 ... – Ralph

答えて

0

コメントに記載されているように、提案された時間単位の分割は、グラフの結果に正確さや信用を与えるようには見えません。私は、開始時間と停止時間がこれらの部門に丸められた最大10分のセグメントを提案します。

真夜中から午前1時までは0時とみなされ、午後11時から真夜中は23時間とみなされます。時間は変換することができますが、それは生産的なコーディングではないようです。代わりに、適切な時間括弧を使用するようにユーザーを教育します。

Option Explicit 

Sub create_time_duration() 
    Dim h As Long, trw As Long, drw As Variant 
    With Worksheets("Sheet6") 
     .Range("E:EU").EntireColumn.Delete 
     For h = 0 To 23 
      With .Cells(1, 6 + h * 6).Resize(1, 6) 
       .EntireColumn.ColumnWidth = 0.6 
       .Merge 
       With .Resize(1, 1) 
        .NumberFormat = "hh:mm" 
        .Value = TimeSerial(h, 0, 0) 
        .HorizontalAlignment = xlCenter 
        .VerticalAlignment = xlCenter 
        .Font.Size = 10 
       End With 
      End With 
     Next h 

     For trw = 2 To .Cells(Rows.Count, "C").End(xlUp).Row 
      If Not IsEmpty(.Cells(trw, "A")) Then 
       drw = Application.Match(.Cells(trw, "A").Value2, .Columns("E"), 0) 
       If IsError(drw) Then 
        .Cells(Rows.Count, "E").End(xlUp).Offset(1, 0) = .Cells(trw, "A").Value2 
        drw = Application.Match(.Cells(trw, "A").Value2, .Columns("E"), 0) 
       End If 
       .Cells(drw, "F").Resize(1, 144).NumberFormat = ";;;" 
      End If 
      .Cells(drw, (Hour(.Cells(trw, "B").Value) + 1) * 6 + _ 
         CLng(Minute(.Cells(trw, "B").Value)/10)). _ 
         Resize(1, Hour(.Cells(trw, "C").Value - .Cells(trw, "B").Value) * 6 + _ 
            CLng(Minute(.Cells(trw, "C").Value - .Cells(trw, "B").Value)/10)) = 1 
     Next trw 

     With .Range(.Cells(2, "E"), .Cells(Rows.Count, "E").End(xlUp)) 
      With .Resize(.Rows.Count, 144).Offset(0, 1) 
       .FormatConditions.Delete 
       .FormatConditions.Add Type:=xlExpression, Formula1:="=AND(F2)" 
       With .FormatConditions(.FormatConditions.Count) 
        With .Interior 
         .Color = vbGreen 
        End With 
        .StopIfTrue = False 
       End With 
      End With 
     End With 
    End With 

End Sub 

時間枠グラフをドレスアップする任意のセルの枠線を作成することができます。

create_time_duration Subプロシージャの前に

time_duration_before

time_duration_after
create_time_durationサブ手順の後