我想将数字(0)添加到值中,并发现它有点麻烦。 Excel将宏记录为
Sub Makro2()
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).XValues = _
"='Sheet'!$C$221;'Sheet'!$C$223;'Sheet'!$C$225"
ActiveChart.SeriesCollection(2).Values = _
"='Sheet'!$B$222;'Sheet'!$B$224;'Sheet'!$B$226"
End Sub
但是当我尝试使用我的代码时,我会收到错误。
Dim lineSeries1 As Range
Dim lineSeries2 As Range
With ActiveChart.SeriesCollection.NewSeries
.Values = "={0;100}" 'It works
.Name = ""
.XValues = "={0;100}" 'It works
End With
With ActiveChart.SeriesCollection.NewSeries
.Values = lineSeries1 ' + {0} or & SomeCellWithZero.Address
.Name = ""
.XValues = lineSeries2 ' + {0} or & SomeCellWithZero.Address
End With
所以问题是如何为值添加零?
答案 0 :(得分:2)
就个人而言,我会使我的范围变大一个单元格并添加一个恒定的零值。如果由于某种原因这是不可能的,那么下面的内容可能会有所帮助; - )
这是一个稍微迂回的方式到达那里。有可能用更少的步骤来完成它,但我还不知道如何。
我将使用VBA函数从原始范围构建一个包含零的新数组。我将零置于数组的开头,改变代码以获得不同的东西。这是VBA功能:
Public Function PrependZero(rng As range)
Dim val As Variant, res As Variant
Dim idx As Long
val = Application.Transpose(rng.Columns(1).Value) ' get range values as a 1-dimensional array, assumes values are in a column
ReDim res(LBound(val) To UBound(val) + 1) ' array to hold the extended values
res(LBound(res)) = 0 ' add the fixed value
For idx = LBound(val) To UBound(val)
res(idx + 1) = val(idx) ' copy the other values
Next
PrependZero = res
End Function
Excel似乎不喜欢我们在系列定义中使用VBA函数,所以我们需要添加一些间接来欺骗它。创建一个新的命名公式(公式...定义名称)。我打电话给我的YSeries
并将“引用”值设置为=PrependZero(Sheet1!$A$2:$A$6)
,使用我的Y值范围作为函数的输入。
在图表系列定义中使用命名公式 :将“Series Y Values”设置为[YourWorkbookNameHere]!YSeries
(使用您在上面创建的任何名称)。
如果你想对X值做同样的事情,那么相同的方法应该有效。