Excel 图表在特定日期省略了其他数据值
Excel Chart Omitting Additional Data Values on Specific Date
我有一个宏可以从一系列数据中生成 Chart
。请参阅以下数据:
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
第一列代表日期,第二列代表该日期的时间范围。
注意 我在 sheet 中找到的原始数据是已合并的单元格。有关详细信息,请参见下面的屏幕截图。
问题是图表只显示为该日期分配的较大数字。
见下面的代码。
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
我是否需要包含 Chart1
中的一个元素以不遗漏特定日期的第二个数据值?
如果要在X轴上重复一天,需要添加:
.Axes(xlCategory).CategoryType = xlCategoryScale
使用@Rory 的回答,我看到显示了所有行。
经过一番搜索后,我发现 Chart
中默认只有显示单元格中的数据(即未隐藏)在 Chart
中可见。
然后我将 Range(Rows(x), Rows(y)).Hidden = True
合并到脚本中,它为我提供了特定时间段的合并单元格。
下图为最终产品。
您可以在图表中看到 2015/08/01 的双重条目
.Axes(xlCategory).CategoryType = xlCategoryScale
基本上将水平轴类型设置为 "Text axis",如右键单击轴 Excel 弹出菜单中所指
欢迎就使用 Rory 在他的回答中提到的不同类型的图表提出任何其他建议。
暂时不回答这个问题。
我有一个宏可以从一系列数据中生成 Chart
。请参阅以下数据:
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
第一列代表日期,第二列代表该日期的时间范围。
注意 我在 sheet 中找到的原始数据是已合并的单元格。有关详细信息,请参见下面的屏幕截图。
问题是图表只显示为该日期分配的较大数字。
见下面的代码。
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
我是否需要包含 Chart1
中的一个元素以不遗漏特定日期的第二个数据值?
如果要在X轴上重复一天,需要添加:
.Axes(xlCategory).CategoryType = xlCategoryScale
使用@Rory 的回答,我看到显示了所有行。
经过一番搜索后,我发现 Chart
中默认只有显示单元格中的数据(即未隐藏)在 Chart
中可见。
然后我将 Range(Rows(x), Rows(y)).Hidden = True
合并到脚本中,它为我提供了特定时间段的合并单元格。
下图为最终产品。
您可以在图表中看到 2015/08/01 的双重条目
.Axes(xlCategory).CategoryType = xlCategoryScale
基本上将水平轴类型设置为 "Text axis",如右键单击轴 Excel 弹出菜单中所指
欢迎就使用 Rory 在他的回答中提到的不同类型的图表提出任何其他建议。
暂时不回答这个问题。