Excel 使用VBA调整图表中水平轴的比例
我试图用VBA创建一个图表,用代码从表中收集数据(不是直接选择工作表中的数据,而是进行一些内部计算)。我的问题是它不能正确绘制X轴(它应该只显示12.19、01.20、02.20): 你知道如何调整这个(因为每个月有不同的天数…) 这是我的代码:Excel 使用VBA调整图表中水平轴的比例,excel,vba,excel-charts,Excel,Vba,Excel Charts,我试图用VBA创建一个图表,用代码从表中收集数据(不是直接选择工作表中的数据,而是进行一些内部计算)。我的问题是它不能正确绘制X轴(它应该只显示12.19、01.20、02.20): 你知道如何调整这个(因为每个月有不同的天数…) 这是我的代码: Function ChartGenerator(mes As Double, contrato As String, kpi As String) Dim listax() As Double Dim listay() As Doub
Function ChartGenerator(mes As Double, contrato As String, kpi As String)
Dim listax() As Double
Dim listay() As Double
Dim numeelem As Integer
numeelem = 0
last_row = Worksheets("Data").Range("A" & Rows.Count).End(xlUp).row
For i = 2 To last_row
If Worksheets("Data").Cells(i, 8).value <= mes And Worksheets("Data").Cells(i, 4).value = contrato _
And Worksheets("Data").Cells(i, 5).value = kpi Then
numeelem = numeelem + 1
End If
Next i
ReDim listax(numeelem - 1)
ReDim listay(numeelem - 1, 1)
numeelem = 0
For i = 2 To last_row
If Worksheets("Data").Cells(i, 8) <= mes And Worksheets("Data").Cells(i, 4) = contrato _
And Worksheets("Data").Cells(i, 5) = kpi Then
numeelem = numeelem + 1
listax(numeelem - 1) = Worksheets("Data").Cells(i, 8).value **'Those are dates**
listay(numeelem - 1, 0) = Worksheets("Data").Cells(i, 6).value
listay(numeelem - 1, 1) = Worksheets("Data").Cells(i, 7).value
End If
Next i
Dim ydata As Variant
ReDim ydata(numeelem - 1)
Charts.Add
With ActiveChart
.ChartArea.ClearContents
.ChartType = xlXYScatterLines
.ChartStyle = 241 'para cambiar el estilo, usar este
For k = 1 To 2
For j = 0 To numeelem - 1
ydata(j) = listay(j, k - 1)
Next j
.SeriesCollection.NewSeries
.SeriesCollection(k).XValues = listax
.SeriesCollection(k).Values = ydata
.SeriesCollection(k).Name = Worksheets("Data").Cells(1, 6 - 1 + k).value '"prueba" & i 'ID(i, 1)
If k = 2 Then
.SeriesCollection(k).Format.Line.DashStyle = msoLineSysDash
End If
For j = 1 To numeelem
With .SeriesCollection(k).Points(j)
.ApplyDataLabels
.DataLabel.Text = listay(j - 1, k - 1)
End With
Next j
Next k
.HasTitle = True
.Legend.Format.TextFrame2.TextRange.Font.Size = 14
.ChartTitle.Text = contrato & " - " & kpi
With .Axes(xlCategory, xlPrimary)
.HasTitle = True
.AxisTitle.Characters.Text = "Date"
.AxisTitle.Font.Size = 14
.AxisTitle.Font.Name = "calibri"
.CategoryType = xlTimeScale
.MinimumScale = listax(0) - 0.0000000001
.MaximumScale = listax(numeelem - 1) + 1
.MinorUnit = 31
.MajorUnit = 31
.TickLabels.NumberFormat = "mmmm-yy"
End With
With .Axes(xlValue, xlPrimary)
.HasTitle = True
.AxisTitle.Text = "Amount of €"
.AxisTitle.Font.Size = 14
.AxisTitle.Font.Name = "calibri"
End With
End With
End Function
函数图表生成器(mes为双精度,contrato为字符串,kpi为字符串)
Dim listax()为双精度
Dim listay()为双精度
作为整数的Dim numelem
努米勒姆=0
最后一行=工作表(“数据”).Range(“A”和Rows.Count).End(xlUp).row
对于最后一行的i=2
如果工作表(“数据”).Cells(i,8).value是保存在行或列中的x轴上显示的日期?如果您“使用VBA创建图表”,请向我们显示代码。我添加了代码,您知道吗?