2017-02-01 25 views
0

ワークシート "Tracker"には散布図が36あります。同じワークシートには12セットのデータが含まれています。各セットには3つの変数が含まれており、関連する日付/時刻までグラフ化する必要があります。私は、ループを作成することでコードをきれいにすることができるように、それらの名前を付けました。ActiveChart.SeriesCollection(1).XValuesに日付が表示されません

これは問題です:これは素晴らしいですが、すべてのグラフの水平軸は実際の値を表していません。 ={"1/10/2017 12:11:03 PM","1/10/2017 12:11:06 PM","1/10/2017 12:11:09 PM","1/10/2017 12:11:12 PM","1/10/2017 12:11:15 PM","1/10/2017 12:11:19 PM","1/10/2017 12:11:22 PM","1/10/2017 12:11:25 PM","1/10/2017 12:11:28 PM","1/10/2017 12:11:31 PM"}

上記は、データの選択に行くときのXValuesシリーズの表示ですが、グラフには1/0/00、1/1/00、1/2/00などのX値が表示されます。日付列が日付/時刻形式でフォーマットされていることを確認しました。 は、ここでは、コードです:

For i = 1 To 12 
    k = (i * 4) + 49 
    RowCount = ThisWorkbook.Sheets("Tracker").Cells(1, k).Offset(Sheets("Tracker").Rows.Count - 1, 0).End(xlUp).Row 
    ActiveSheet.ChartObjects("Location" & i & "_1").Activate 
    ActiveChart.SeriesCollection(1).Name = Worksheets("Tracker").Cells(1, k + 2).Value 
    **ActiveChart.SeriesCollection(1).XValues = Worksheets("Tracker").Range(Cells(2, k), Cells(RowCount, k)).Value** 
    ActiveChart.SeriesCollection(1).Values = Worksheets("Tracker").Range(Cells(2, k + 2), Cells(RowCount, k + 2)).Value 
    ActiveChart.SeriesCollection(2).Name = Worksheets("Tracker").Cells(1, k + 3).Value 
    **ActiveChart.SeriesCollection(2).XValues = Worksheets("Tracker").Range(Cells(2, k), Cells(RowCount, k)).Value** 
    ActiveChart.SeriesCollection(2).Values = Worksheets("Tracker").Range(Cells(2, k + 3), Cells(RowCount, k + 3)).Value 

    ActiveSheet.ChartObjects("Location" & i & "_2").Activate 
    ActiveChart.SeriesCollection(1).Name = Worksheets("Tracker").Cells(1, k + 1).Value 
    **ActiveChart.SeriesCollection(1).XValues = Worksheets("Tracker").Range(Cells(2, k), Cells(RowCount, k)).Value** 
    ActiveChart.SeriesCollection(1).Values = Worksheets("Tracker").Range(Cells(2, k + 1), Cells(RowCount, k + 2)).Value 

    l = (i * 2) + 102 
    RowCount1 = ThisWorkbook.Sheets("Tracker").Cells(1, l).Offset(Sheets("Tracker").Rows.Count - 1, 0).End(xlUp).Row 
    ActiveSheet.ChartObjects("Location" & i & "_3").Activate 
    ActiveChart.SeriesCollection(1).Name = Worksheets("Tracker").Cells(1, l + 1).Value 
    **ActiveChart.SeriesCollection(1).XValues = Worksheets("Tracker").Range(Cells(2, l), Cells(RowCount1, l)).Value** 
    ActiveChart.SeriesCollection(1).Values = Worksheets("Tracker").Range(Cells(2, l + 1), Cells(RowCount1, l + 2)).Value 

    Next i 

私は、グラフ上のデータポイントの上にカーソルを置く、日付がテキストで示しているが、それは1から始まる番号のY値をプロットし、日付をutlizingされていないように思えます/すべての時間。

これまでは、各グラフを関連するシリーズで書きましたが、36個のグラフがあるため、それぞれのためにこれを行う必要があります。それは狂っています。すべてのヘルプは高く評価され

ActiveChart.SeriesCollection(1).Name = "=" & "Location" & i & "!$AC$1" 
    ActiveChart.SeriesCollection(1).XValues = "=" & "Location" & i & "!$AA$1:$AA$" & RowCount1 
    ActiveChart.SeriesCollection(1).Values = "=" & "Location" & i & "!$AC$1:$AC$" & RowCount1 
    ActiveChart.SeriesCollection(2).Name = "=" & "Location" & i & "!$AD$1" 
    ActiveChart.SeriesCollection(2).XValues = "=" & "Location" & i & "!$AA$1:$AA$" & RowCount1 
    ActiveChart.SeriesCollection(2).Values = "=" & "Location" & i & "!$AD$1:$AD$" & RowCount1 

:これを使用して 私は問題がありません。

答えて

0

まず、ActiveSheet.ChartObjects("Location" & i & "_1")オブジェクトをChartObjectに設定してください。Activateを使用してグラフを変更する必要はありません。

あなたのChartObjectSeriesCollectionのすべてをFor j= 1 To .Chart.SeriesCollection.Countでループすることができます。

コード

Option Explicit 

Sub AutoChartTest() 

Dim ChtObj As ChartObject 
Dim Ser As SeriesCollection 
Dim SerRng As Range 
Dim j As Long, i As Long, RowCount1 As Long 

' set the chart object 
Set ChtObj = ActiveSheet.ChartObjects("Location" & i & "_1") 

With ChtObj '<-- modify properties of the chart object (without Activating it) 
    For j = 1 To .Chart.SeriesCollection.Count ' <-- loop through all series collections 
     Set SerRng = Range("AC1").Offset(, j - 1) 

     .Chart.SeriesCollection(j).Name = "=" & "Location" & i & "!" & SerRng.Address 
     .Chart.SeriesCollection(j).XValues = "=" & "Location" & i & "!$AA$1:$AA$" & RowCount1 
     .Chart.SeriesCollection(j).Values = "=" & "Location" & i & "!" & SerRng.Address & ":$AC$" & RowCount1 
    Next j 
End With 

End Sub 
+0

こんにちはシャイ、返信いただきありがとうございます。私は日付/時間が列AAだけでなく、AAから始まる5列ごとにあるという事実を追加しておくべきです。同様のSerRngを使用して異なる日付/ティム列を定義することはできますか?これは数値または不正な日付/時刻としても表示されますか?これは非常にきれいですが、私はここでいくつかの非常に有用なポインターを選んだ。 – jmeddy

+0

@jmeddyあなたの投稿を編集したり、あなたのチャートのサンプルを共有したり、どこからデータを取得したら、私はあなたが何を意味し、達成しようとしているのかをよく理解できると思う –

関連する問題