使用VBA在Excel中分散绘图

时间:2014-07-18 14:26:06

标签: excel vba scatter-plot

我有一列包含我的x数据和两列包含我的y数据。我想对y绘制y,但每列的长度取决于计数器变量,i。我没有vba的经验,但是有编码的经验。有人可以概述正确的语法来执行此任务吗?

请,谢谢!

3 个答案:

答案 0 :(得分:0)

你可以转到你的开发者'选项卡,并记录一个宏。在记录模式下,使用您想要的数据和规格创建图形。

结束宏的录制,然后你将有一个VBA代码模板(ALT + F11)作为基础。

答案 1 :(得分:0)

听起来最好的解决方案是简单地使X-Y散点图范围比您预期的数据更长(Excel将忽略空白行)。

但是如果你想获得幻想,你可以使用动态命名范围填充散点图数据,这些数据会自动调整到数据的长度,而不会打扰VBA:

  1. 创建表示X数据列的动态命名范围(AKA命名公式)。

    示例(假设列A,数据从A1开始):

    =$A$1:INDEX($A$1:$A$1000,MATCH(TRUE,ISBLANK(Sheet1!$A$1:$A$1000),0)-1)
    

    更改$A$1,使其对应于数据的第一行。将$A$1000更改为比您预期的数据更长的行号。

    调用上面指定的公式" XColumn"或类似的东西。要创建命名范围,请执行Formulas - > Define Name

  2. 将散点图的X范围设置为:

    =Sheet1!XColumn
    

    请注意,如果您尝试输入不带工作表名称的命名范围,Excel的绘图窗口将给出错误(没有关于如何解决问题的任何有用信息!),即使命名范围是作用域的整个工作簿,即使它在同一个工作表上! - 烦人,对吧?

  3. 对每列和散点图范围(Y1 = Y1Column,Y2 = Y2Column等)执行此操作。

  4. 请注意,如果您的列数据包含文本,空格,错误等,则无法正常工作,但可以修改此方法以解决这些问题。

    要测试并确保按预期创建动态命名范围,您可以在任何单元格中输入:

    =SUMPRODUCT(XColumn)
    

    然后执行Formulas - > Evaluate Formula - > Evaluate以确保XColumn数组包含您希望它包含的数据。


    可选提示:创建另一个名为FirstColumn的命名范围,设置为第一列的位置,例如$A:$A。将另一个命名范围称为FirstRow并将其设置为第一行的位置,例如$1:$1。将另一个名为MaxRow命名范围设置为并将其设置为您期望数据的最大长度,例如$1000:$1000。最后:

    • 将以上$A$1的所有实例替换为:

      INDEX(FirstRow,0,COLUMN(FirstColumn)+<DATA TABLE COLUMN NUMBER - 1>)

    • $A$1000的所有实例替换为:

      INDEX(MaxRow,0,COLUMN(FirstColumn)+<DATA TABLE COLUMN NUMBER - 1>)

    <DATA TABLE COLUMN NUMBER - 1>对于每个命名公式都会有所不同(例如0XColumn1Y1Column,{{1}为2等等)。

    现在,如果您想要在不同位置创建新数据表和散点图,而不是再次完成所有工作,您只需复制并粘贴您的命名范围,您只需要更改一个或两个事情而不是15 !此外,如果数据比预期的要长,您只需改变一件事而不是3件。

答案 2 :(得分:0)

Excel内置Table功能是添加新数据时自动增加范围大小的好方法。只需选择您的数据,然后按Ctrl + t或转到Insert > Table即可。然后,当您从Table引用新的Chart时,它会随着您的数据而增加。