0

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

最初の列は日付を表し、2 番目の列はその日付からの時間枠です。

シートで見つかった元のデータは、結合されたセルであることに注意してください。詳細については、以下のスクリーン ショットを参照してください。

ここに画像の説明を入力

問題は、チャートがその日付に割り当てられたより大きな数のみを表示することです。

以下のコードを参照してください。

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特定の日付から 2 番目のデータ値を省略しないために含める必要がある要素はありますか?

4

2 に答える 2

1

X 軸でその日を繰り返したい場合は、以下を追加する必要があります。

.Axes(xlCategory).CategoryType = xlCategoryScale
于 2016-01-13T12:52:05.480 に答える
0

@Rory からの回答を使用すると、すべての行が表示されていることがわかりました。

いくつかの検索を行った後Chart、デフォルトでは、表示されたセルのデータのみが表示されることがわかりました(つまり、非表示ではありません)Chart

次にRange(Rows(x), Rows(y)).Hidden = True、特定の期間のマージされたセルを提供するスクリプトに a を組み込みました。

下の画像は最終製品を表しています。

ここに画像の説明を入力

チャートで 2015/08/01 のデュアル エントリを確認できます。

基本的には.Axes(xlCategory).CategoryType = xlCategoryScale、軸を右クリックしたときにExcelのポップアップメニューで参照されるように、水平軸タイプを「テキスト軸」に設定します

Roryが回答で述べたように、異なるタイプのチャートを使用することに関するその他の提案は大歓迎です。

当分の間、この質問は未回答のままにします。

于 2016-01-13T14:08:27.917 に答える