0

我需要编写一个脚本,该脚本将根据 .csv 文件中两列的数据创建图表。

数据集:

Date, Memory Free
Thu Mar 28 12:19:03 ,19252852,
Thu Mar 28 12:19:08 ,19253444,
Thu Mar 28 12:19:13 ,19253492,
Thu Mar 28 12:19:18 ,19253676,
Thu Mar 28 12:19:23 ,19251164,
Thu Mar 28 12:19:28 ,19251568,
Thu Mar 28 12:19:33 ,19251496,
Thu Mar 28 12:19:38 ,19249448,
Thu Mar 28 12:19:43 ,19250472, 

Date, %Idle
Thu Mar 28 12:19:03 ,99.80,
Thu Mar 28 12:19:08 ,99.80,
Thu Mar 28 12:19:13 ,99.80,
Thu Mar 28 12:19:18 ,99.80,
Thu Mar 28 12:19:23 ,99.80,
Thu Mar 28 12:19:28 ,99.80,
Thu Mar 28 12:19:33 ,99.80,
Thu Mar 28 12:19:38 ,99.80,
Thu Mar 28 12:19:43 ,99.80,
Thu Mar 28 12:19:48 ,99.80,
Thu Mar 28 12:19:53 ,99.80,
Thu Mar 28 12:19:58 ,99.80,
Thu Mar 28 12:20:03 ,99.80,

这是我到目前为止所得到的:

Sub Macro3()
'
' Macro3 Macro
'
' Keyboard Shortcut: Ctrl+p
'
Columns("A:A").Select
Selection.NumberFormat = "ddd mmm dd hh:mm:ss"
Range("A1:B66677").Select
Range("A2").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SetSourceData Source:=Range( _
    "'cwapp2_MemCPU-Date-pIdle'!$A$1:$B$66677")
End Sub

但它没有在 x 轴上显示日期。那么我该如何解决呢?而且,我可以使用 VBA 处理多个文件吗?

4

1 回答 1

0

我稍微清理了您的代码,并在底部添加了几行来设置日期的刻度标签。这假定基础数据是DateExcel 识别的有效值

您在示例中提供的数据是 Excel 不解释为日期的字符串值。如果它实际上以这种方式存储在 CSV 中,请告诉我,我们可以稍微调整一下来解决这个问题。

Sub Macro3()
'
' Macro3 Macro
'
' Keyboard Shortcut: Ctrl+p
Dim cht as Chart
Dim tl As TickLabels

ActiveSheet.Columns("A:A").NumberFormat = "ddd mmm dd hh:mm:ss"


Set cht = ActiveSheet.Shapes.AddChart.Chart
cht.ChartType = xlXYScatterSmoothNoMarkers
cht.SetSourceData Source:=Range( _
"'cwapp2_MemCPU-Date-pIdle'!$A$1:$B$66677")

Set tl = cht.Axes(xlCategory).TickLabels

tl.NumberFormat = "ddd mmm dd hh:mm:ss"

End Sub

要转换 A 列中的字符串数据,您可以使用如下内容:

Sub ConvertTextToDate()

Dim cl As Range
Dim dt As Date

    For Each cl In Range("A1:A66677")
        dt = Right(cl.Value, Len(cl.Value) - 4)
        cl.Value = dt
        cl.NumberFormat = "ddd mmm dd hh:mm:ss"
    Next
End Sub
于 2013-04-08T16:23:04.720 回答