I have a macro which generates a Chart
from a range of data. See data below:
2015/08/01 12:49.002
2015/08/01 00:41.600
2015/08/02 00:27.198
2015/08/03 01:05.600
2015/08/03 01:30.599
2015/08/04 02:29.799
2015/08/05 01:40.199
2015/08/06 01:36.199
2015/08/07 02:16.998
2015/08/07 00:43.401
The first Column represents the date and then second is a time frame from that date.
NOTE the original data i found in the sheet is cells which have been merged. See screen shot below for more info.
The problem is that the Chart only displays the greater number allocated for that date.
See code below.
Option Explicit
Public Declare Function GetTickCount Lib "kernel32.dll" () As Long
Sub CreateChart()
Dim DateRange, TimeRange As Range
Dim lastRow As Long
Dim StartRow As Long, columnIndex As Long
Dim DataWorkSheet As Worksheet
Dim DataFileFullPath As String, DataFileName As String, SheetName As String
Dim Index As Long, Index2 As Long
Dim t As Long
Dim tt As Long
Dim Chart1 As Chart
' 'Disable Screen Updating
' Application.ScreenUpdating = False
' Application.Calculation = xlCalculationManual
StartRow = 20
columnIndex = 3
'Put Full File Path for your demo/test file here
DataFileFullPath = "C:\Users\................."
Index = InStrRev(DataFileFullPath, "\")
DataFileName = Right(DataFileFullPath, Len(DataFileFullPath) - Index)
Index2 = InStrRev(DataFileName, ".")
SheetName = Left(DataFileName, Index2 - 1)
Set DataWorkSheet = Workbooks(DataFileName).Sheets(SheetName)
t = GetTickCount
With DataWorkSheet
With .UsedRange
'Getting the last Row
lastRow = .Rows(.Rows.Count).row - 1
End With
'The DataStartRow is set to the ORiginal Time from the T3000
Set DateRange = .Range(.Cells(StartRow, columnIndex + 1), .Cells(lastRow, columnIndex + 1))
Set TimeRange = .Range(.Cells(StartRow, columnIndex + 2), .Cells(lastRow, columnIndex + 2))
End With
Set Chart1 = Charts.Add
With Chart1
.ChartType = xlColumnClustered
.SeriesCollection.NewSeries
With .SeriesCollection(1)
.Values = TimeRange
.Name = SheetName & " " & "Synch Time"
.XValues = DateRange
End With
.Name = SheetName & " " & "Synch Time Chart"
.Axes(xlValue).MaximumScale = 0.0104166667 ' 15 mins / 50 / 24
.Axes(xlValue).MajorUnit = 0.0006944444 ' 1 mins /60 / 24
.Move After:=Sheets(2)
End With
tt = GetTickCount - t
' 'Enable Screen Updating
' Application.ScreenUpdating = True
' Application.Calculation = xlCalculationAutomatic
End Sub
Is there an element of Chart1
that I need to include to not omit a second data value from a specific date?