Excel VBA宏用于从图中提取列号

时间:2018-03-26 12:16:53

标签: excel vba plot scatter-plot

我经常在一个工作表中制作大量的散点图(列j与列i)。我想将它们导出为png / jpg文件。每个图都需要一个合理的文件名。我原以为文件名可能是plot_ [column i] _ [column j] .png。

如何从每个图(或ActiveChart)中获取列(如C或AE)?然后我可以创建一个文件名字符串以输入到Export方法。我是VBA宏的完全初学者,但了解一些Visual Basic。

1 个答案:

答案 0 :(得分:0)

您可以使用文本函数从源数据字符串中提取该信息。使用.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