您可以使用文本函数从源数据字符串中提取该信息。源数据可使用.SeriesCollection:
activesheet.chartobjects("Chart 1").chart.SeriesCollection(1).Formula
将返回如下内容:
"=SERIES(,Sheet1!$A$1:$A$4,Sheet1!$B$1:$B$4,1)"
其中包含您需要的两列,“A”和“B”。您可以使用 INSTR()、MID() 和 LEFT() 等文本函数提取它们。这是一个使用 debug.print 输出列的示例。我假设您已经知道如何导出它们,因为您的问题中没有包含这些内容。
Sub FindSourceColumns()
Dim sourcedata, firstcolumn, secondcolumn As String, c as chartobject
for each c in activesheet.chartobjects
sourcedata = c.Chart.SeriesCollection(1).Formula
firstcolumn = Mid(sourcedata, InStr(sourcedata, "!$") + 2, 5)
firstcolumn = Left(firstcolumn, InStr(firstcolumn, "$") - 1)
Debug.Print firstcolumn
secondcolumn = Mid(sourcedata, InStr(InStr(sourcedata, "!$") + 2, sourcedata, "!$") + 2, 5)
secondcolumn = Left(secondcolumn, InStr(secondcolumn, "$") - 1)
Debug.Print secondcolumn
next c
End Sub