excel - 遍历多个列并构建它们的图表的 VBA 代码

标签 excel vba

对于以下情况,我需要一个示例代码:

  • 我的工作簿中有多个包含数据列的工作表
  • 工作表如下所示:
    X1 Y1  X2 Y2  ...
    2  100 2  101
    3  110 3  108
    4  115 5  114
    5  116 6  117
    6  120 7  121
    
  • 每张表都有相同的数据标题(在本例中为 X1 和 Y1 等)。
  • 每个工作表仅包含每个数据列标题中的一个(Y2 找不到两次
    来自当前工作表)。

  • 我需要一个 VBA 代码,它通过给定的数据列标题查找所有数据列,并将所有这些数据列的图形绘制到一个散点图上,并用当前工作表名称命名绘制的线。

    以下数据将创建一个散点图
       X1 Y1   
       2  100 
       3  110 
       4  115 
       5  116 
       6  120 
    

    而这个会为同一个散点图创建另一个图表。
         X2 Y2
         2  101
         3  108
         5  114
         6  117
         7  121
    

    所以所有的数据图也有单独的 x 轴值。

    我的主要问题是由于某种原因我不知道如何制作散点图
    使用 VBA。找到我可以开始工作的正确数据列。

    答案是否会是某种子程序,将给定范围的新行添加到给定的散点图?
    Sub createChart()
    
    Dim headerToFind As String
    headerToFind = "Y2" 
    
    Dim i As Integer
    Dim j As Integer
    Dim ws As Worksheet
    i = 1
    j = 1
    
    ' create and initialize scatterplot chart to given worksheet
    
    
    For Each ws In Workbooks("data.xlsm").Worksheets
    
        Do While IsEmpty(ws.Cells(1, i)) = False
    
            If ws.Cells(1, i) = headerToFind Then
    
               ' get data from column i. x values can be found from column i-1
    
            End If
    
            i = i + 1
        Loop
    Next ws
    

    结束子

    最佳答案

    您的问题非常广泛,但在您的评论中,您更具体地询问“如何创建一个散点图,我稍后可以通过它的名称来引用它。”

    据我所知,在 Excel 中为图表命名的过程有点尴尬。我发现这样做的唯一方法是通过单击它来激活图表,然后进入 VBA 编辑器的即时窗口,然后键入:

    ActiveChart.Parent.Name = "My scatter plot" ' or whatever name
    

    然后,假设您没有删除图表,您可以在代码中引用它,如下所示:
    Dim cho As chartObject
    Dim cht As Chart
    Set cho = Sheet1.ChartObjects("My scatter plot") 
    Set cht = cho.Chart
    

    这是假设它在 Sheet1 .酌情调整。然后你可以像这样向它添加系列:
    Dim ser As Series
    Set ser = cht.SeriesCollection.NewSeries
    With ser
        'example settings:
        .ChartType = xlXYScatter
        .XValues = Range("A2:A6")
        .Values = Range("B2:B6")
        .Name = Range("B1").Value
        .MarkerStyle = xlMarkerStyleNone
        'can also format the line style, color, weight, etc. etc.
    End With
    

    更多详情请访问 ChartChartObject对象,看看this earlier answer .

    关于excel - 遍历多个列并构建它们的图表的 VBA 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294816/

    相关文章:

    excel - 查看一张 excel 表中是否有术语

    excel - 目标.地址和目标.地址.行

    java - 如果文档具有不同的格式,如何将数据从 Java 导出到 Excel 或 Word?

    excel - 如何在vba(格式或控制工具箱)中设置选中的属性

    vba - Excel VBA通​​过鼠标获取用户选择范围的范围

    excel - 如何从 Power Query 中的上一行获取列值?

    vba - 结合 VBA 和公式来检查独特的输出

    vba - ACCESS VBA - 获取无线网络名称(已连接)

    excel - 创建自安装宏?

    excel - 以 "=xxx+xxx..."的形式生成总和