Excel VBA中具有各种Y值和一个X值的graphics

这是我用来创build一个图表search.csv {创build使用Excel应用程序}文件在指定的path的代码。 它绘制列'B'{Y轴}对列'C'{X轴} ..我想多一列'A'我的Y轴保持列'C'作为X轴..我怎么能去做???

这里是代码…

Sub Draw_Graph() Dim strPath As String Dim strFile As String Dim strChart As String Dim i As Integer Dim j As Integer strPath = "C:\PortableRvR\report\" strFile = Dir(strPath & "*.csv") i = 1 Do While strFile <> "" With ActiveWorkbook.Worksheets.Add With .QueryTables.Add(Connection:="TEXT;" & strPath & strFile, _ Destination:=.Range("A1")) Parent.Name = Replace(strFile, ".csv", "") TextFileParseType = xlDelimited TextFileTextQualifier = xlTextQualifierDoubleQuote TextFileConsecutiveDelimiter = False TextFileTabDelimiter = False TextFileSemicolonDelimiter = False TextFileCommaDelimiter = True TextFileSpaceDelimiter = False TextFileColumnDataTypes = Array(1) TextFileTrailingMinusNumbers = True Refresh BackgroundQuery:=False Files(i) = .Parent.Name i = i + 1 End With End With strFile = Dir Loop numOfFiles = i - 1 chartName = "Chart 1" For j = 1 To numOfFiles strFile = Files(j) Sheets(strFile).Select Plot_y = Range("B1", Selection.End(xlDown)).Rows.Count Plot_x = Range("C1", Selection.End(xlDown)).Rows.Count Sheets("GraphDisplay").Select If j = 1 Then ActiveSheet.ChartObjects(chartName).Activate ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(j).Name = strFile ActiveChart.SeriesCollection(j).XValues = Sheets(strFile).Range("C1:C" & Plot_x) ActiveChart.SeriesCollection(j).Values = Sheets(strFile).Range("B1:B" & Plot_y) ActiveChart.SeriesCollection(j).MarkerStyle = -4142 ActiveChart.SeriesCollection(j).Smooth = False Next j ActiveSheet.ChartObjects(chartName).Activate ActiveChart.Axes(xlValue).DisplayUnit = xlMillions ActiveChart.Axes(xlValue).HasDisplayUnitLabel = False End Sub 

你可以为每个文件添加2个序列(j和j + 1里面for j = 1 to 2*numOfFiles step 2 ),并重复所有的j + 1序列,除了:

 ActiveChart.SeriesCollection(j).Values = Sheets(strFile).Range("A1:A" & Plot_y) ActiveChart.SeriesCollection(j+1).Values = Sheets(strFile).Range("B1:B" & Plot_y) 

不适用于积分

我打算发表这个评论( 因此不要select这个作为答案,所有功劳都归功于@Aprillion ),但是这个评论没有格式化代码,因为这个post会做。

每当你添加一个系列作为Aprillion提到你还必须添加一行。 我只是testing了一小块数据,它的工作原理。

 '<~~ You have to call this everytime you add a new series ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Values = "=Sheet1!$B$1:$B$6" '<~~ You have to call this everytime you add a new series ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Values = "=Sheet1!$A$1:$A$6" 

另外,由于系列1数据和系列2数据(按照快照)有很大差异,因此第二系列将非常接近X轴。

希望这是你想要的?

跟进

这是你正在尝试?

 Dim files(1 To 20) As String Dim numOfFiles As Integer Dim chartName As String, shName as String Sub Time_Graph() Dim strPath As String, strFile As String, strChart As String Dim i As Long, j As Long, n As Long strPath = "C:\PortableRvR\report\" strFile = Dir(strPath & "*.csv") i = 1 Do While strFile <> "" With ActiveWorkbook.Worksheets.Add shName = strFile ActiveSheet.Name = Replace(shName, ".csv", "") With .QueryTables.Add(Connection:="TEXT;" & strPath & strFile, _ Destination:=.Range("A1")) .Name = Replace(strFile, ".csv", "") .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False files(i) = .Parent.Name i = i + 1 End With End With strFile = Dir Loop numOfFiles = i - 1 chartName = "Chart 1" For j = 1 To numOfFiles If n = 0 Then n = j Else n = n + 2 strFile = files(j) Sheets(strFile).Select Plot_y = Range("B1", Selection.End(xlDown)).Rows.Count Plot_x = Range("C1", Selection.End(xlDown)).Rows.Count Sheets("GraphDisplay").Select If j = 1 Then ActiveSheet.ChartObjects(chartName).Activate ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(n).Name = strFile & " - Col B Values" ActiveChart.SeriesCollection(n).XValues = "=" & strFile & "!$C$1:$C$" & Plot_x ActiveChart.SeriesCollection(n).Values = "=" & strFile & "!$B$1:$B$" & Plot_y ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(n + 1).Name = strFile & " - Col A Values" ActiveChart.SeriesCollection(n + 1).XValues = "=" & strFile & "!$C$1:$C$" & Plot_x ActiveChart.SeriesCollection(n + 1).Values = "=" & strFile & "!$A$1:$A$" & Plot_y ActiveChart.SeriesCollection(j).MarkerStyle = -4142 ActiveChart.SeriesCollection(j).Smooth = False ActiveChart.SeriesCollection(n + 1).MarkerStyle = -4142 ActiveChart.SeriesCollection(n + 1).Smooth = False Next j ActiveSheet.ChartObjects(chartName).Activate ActiveChart.Axes(xlValue).DisplayUnit = xlMillions ActiveChart.Axes(xlValue).HasDisplayUnitLabel = False End Sub