我有一列包含我的x数据和两列包含我的y数据。我想对y绘制y,但每列的长度取决于计数器变量,i。我没有vba的经验,但是有编码的经验。有人可以概述正确的语法来执行此任务吗?
请,谢谢!
答案 0 :(得分:0)
你可以转到你的开发者'选项卡,并记录一个宏。在记录模式下,使用您想要的数据和规格创建图形。
结束宏的录制,然后你将有一个VBA代码模板(ALT + F11)作为基础。
答案 1 :(得分:0)
听起来最好的解决方案是简单地使X-Y散点图范围比您预期的数据更长(Excel将忽略空白行)。
但是如果你想获得幻想,你可以使用动态命名范围填充散点图数据,这些数据会自动调整到数据的长度,而不会打扰VBA:
创建表示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
。
将散点图的X范围设置为:
=Sheet1!XColumn
请注意,如果您尝试输入不带工作表名称的命名范围,Excel的绘图窗口将给出错误(没有关于如何解决问题的任何有用信息!),即使命名范围是作用域的整个工作簿,即使它在同一个工作表上! - 烦人,对吧?
对每列和散点图范围(Y1 = Y1Column,Y2 = Y2Column等)执行此操作。
请注意,如果您的列数据包含文本,空格,错误等,则无法正常工作,但可以修改此方法以解决这些问题。
要测试并确保按预期创建动态命名范围,您可以在任何单元格中输入:
=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>
对于每个命名公式都会有所不同(例如0
为XColumn
,1
为Y1Column
,{{1}为2
等等)。
现在,如果您想要在不同位置创建新数据表和散点图,而不是再次完成所有工作,您只需复制并粘贴您的命名范围,您只需要更改一个或两个事情而不是15 !此外,如果数据比预期的要长,您只需改变一件事而不是3件。
答案 2 :(得分:0)
Excel内置Table
功能是添加新数据时自动增加范围大小的好方法。只需选择您的数据,然后按Ctrl + t
或转到Insert > Table
即可。然后,当您从Table
引用新的Chart
时,它会随着您的数据而增加。