大家知道,Excel图表的每个系列使用的数据都是由SERIES公式来确定的。当我们选取图表中的某个数据系列时,在公式栏中就会显示相应的SERIES公式,但这个公式不是真正的公式,不能输入到单元格中。
有时,我们可能会批量修改SERIES公式,但是对于SERIES公式来说,没有内置的“查找和替换”功能。Jon Peltier大师编写了一段程序,可以实现这样的功能,代码如
Sub ChangeSeriesFormula_ActiveChart()
'如果没有活动图表
If ActiveChart Is Nothing Then
MsgBox"请选择图表后重试.",vbExclamation, _
"没有选择图表"
Exit Sub
End If
Dim OldString As String
OldString = InputBox("输入要被替换的字符串:","输入旧字符串")
If Len(OldString) > 1 Then
Dim NewString As String
NewString= InputBox("输入新字符串来替换掉原字符串 "& """" _ &OldString & """:", "输入新字符串")
' 遍历所有系列
Dim srs As Series
For Each srs In ActiveChart.SeriesCollection
Dim NewFormula As String
'替换SERIES公式中的字符串
NewFormula = WorksheetFunction.Substitute(srs.Formula, _ OldString, NewString)
'更新SERIES公式
srs.Formula = NewFormula
Next
Else
MsgBox"没有进行替换操作.",vbInformation, "没有输入"
End If
End Sub
如下图1所示,需要将图表系列中的C替换成D,运行ChangeSeriesFormula_ActiveChart过程,按照提示输入原字符串和新字符串,即可完成替换,并且图表相应更新。
代码的图片版如下: