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 在他的回答中提到的不同类型的图表提出任何其他建议。

暂时不回答这个问题。