Tôi đang cố gắng thêm động nhiều chuỗi vào biểu đồ dạng đường. Tôi không biết trước bao nhiêu series có nên nó cần phải năng động. Những gì tôi đã đưa ra nhưng không hoạt động như sau:Excel VBA Script để tự động thêm chuỗi vào biểu đồ
Trang tính ActiveSheet (hoặc Trang tính ("Dữ liệu") có Hàng từ C14 cho đến khi Cend chứa XValues và Cột từ E14: Eend cho đến R14: Hiển thị ở đâu "cuối" đánh dấu hàng cuối cùng của dữ liệu được xác định theo cột C. Tên chuỗi được lưu trữ trong hàng 9. XValues giống nhau cho tất cả các chuỗi.
Vấn đề lớn của tôi là, tôi không thể tìm cách thêm động tất cả các cột dữ liệu dưới dạng chuỗi vào biểu đồ cùng với tên tương ứng. Tôi không phải là một chuyên gia trong VBA vì vậy hãy tử tế. Tôi đã đọc nhiều nguồn khác nhau và đã thử nhiều kịch bản, dường như không có tác phẩm nào. Danh mục đối tượng là một chút trợ giúp, tuy nhiên vấn đề của tôi vẫn tồn tại.
Sub MakeChart()
Dim LastColumn As Long
Dim LastRow As Long
Dim i As Integer
Dim u As Integer
Dim NameRng As String
Dim CountsRng As Range
Dim xRng As Range
LastColumn = ActiveSheet.Cells(8, Columns.Count).End(xlToLeft).Column
ColumnCount = LastColumn - 4
LastRow = ActiveSheet.Range("C" & ActiveSheet.Rows.Count).End(xlUp).Row
' Debug.Print ("Last Column: " & LastColumn & " Count: " & ColumnCount & " LastRow: " & LastRow)
Charts.Add
With ActiveChart
.ChartType = xlLineMarkers
.HasTitle = True
.ChartTitle.Text = "Test"
End With
For i = 1 To ColumnCount
u = i + 4
NameRng = Sheets("Data").Range("R9:C" & u).Value
Set xRng = Sheets("Data").Range("R14:C3", "R" & LastRow & ":C3")
Set CountsRng = Sheets("Data").Range("R14:C" & u, "R" & LastRow & ":C" & u)
' Debug.Print ("CountsRng: R14:C" & u & ", R" & LastRow & ":C" & u & " NameRng: " & NameRng & " xRng: R14:C3 , R" & LastRow & ":C3")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(i).XValues = xRng
ActiveChart.SeriesCollection(i).Values = CountsRng
ActiveChart.SeriesCollection(i).Name = NameRng
Next i
End Sub
Tính đến nơi nó hoạt động, từ điểm nào nó không hoạt động? –
Chuỗi video có thể bắt đầu bằng chuỗi 0 không? do đó, SeriesCollection (i-1)? Nếu tôi không nhầm, bạn cũng có thể sử dụng 'Với ActiveChart.SeriesCollection.NewSeries' và đặt .XValues vv trong các dòng sau. Sau đó đóng bằng 'Kết thúc bằng' –