2016-01-13 57 views
0

我有一個宏,它可以從一系列數據中生成一個Chart。請參見下面的數據:Excel圖表忽略特定日期的附加數據值

2015年8月1日12:49.002

2015年8月1日00:41.600

2015年8月2日00:27.198

2015/08/03 01:05.600

2015年8月3日01:30.599

2015年8月4日02:29.799

2015年8月5日01:40.199

2015年8月6日01:36.199

2015年8月7日02:16.998

2015年8月7日00:43.401

第一列表示日期,第二列表示該日期的時間範圍。

備註我在表格中找到的原始數據是已合併的單元格。請參閱下面的屏幕截圖瞭解更多信息

enter image description here

的問題是,該圖僅顯示分配給該日期數量較多。

查看下面的代碼。

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,我需要包括對不能省略特定日期的第二數據值的元素?

回答

0

運用@Rory我看到所有的行,顯示出了答案。

經過一番搜索,我看到在Chart中,默認情況下,只有顯示的單元格中的數據(即不隱藏)將在Chart中可見。

然後,我剛剛將Range(Rows(x), Rows(y)).Hidden = True合併到腳本中,該腳本給了我一個特定時間段的合併單元格。

下面的圖片代表最終產品。

enter image description here

你可以看到在圖表爲2015年8月1日的雙項

.Axes(xlCategory).CategoryType = xlCategoryScale基本定Hosrizontal軸類型爲在Excel中彈出菜單被稱爲「文字軸」當右鍵單擊軸

歡迎使用與Rory中提到的其他任何關於使用不同類型的Chart的建議。

將離開這個問題暫時沒有答案。

1

如果你想重複當天在X軸上,你需要添加:

.Axes(xlCategory).CategoryType = xlCategoryScale 
+0

謝謝你。我忘記提及的是,原始數據集合並,因此2015/08/01年的第一個數據集實際上需要8個單元格。你回答的是8個單獨的條目。我沒有忘記提及問題中的合併。我現在將其添加 –

+0

我發現的是,如果我隱藏了特定日期(例如2015/08/91)中除第一行以外的所有行,圖表將僅顯示未隱藏的行中的數據在工作表上。 –

+0

如果彼此不相鄰,你會如何展示它們?如果你希望他們加起來,你需要一個數據透視表而不是一個普通的圖表。 – Rory