下午好!
我希望你可以帮我使用Excel Macros:我对这一切都很陌生(我喜欢使用Excel,但我知道的方式太少了)我已经被分配了一个工作项目,需要我制作工作簿上的一个宏,并使它做几个简单的任务,比如用公式创建新列,创建数据透视表,创建图表等......
我的问题是,现在我已经拥有了所有这些,我意识到如果下一个图表(每6个月左右会有一个图表)甚至还有一个我创建宏的那一行,它将会被排除在外。
所以我想找到的是一种基本告诉宏的方法:不只是从$ A $ 1到$ $ $ 350获取数据,而是将所有单元格中包含数据。因此,如果我自动添加一行"看到"它需要1美元兑换BA $ 351 $。某种"看下一行。如果有数据,请接受。如果没有,请停在这里"。 (对于该栏也是如此)。
我希望这是有道理的,如果它感到困惑我表示道歉,我花了很长时间研究这个问题,我实在很困惑。如果您需要更多信息,请不要问我,并提前感谢您的帮助!!
安东尼
(PS:它可能不重要,但为了以防万一,我在Excel 2013上工作,用于PC)。
答案 0 :(得分:1)
这是一个非常简单的例子,你可以适应。假设我们有以下数据:
但我们不知道数据会走多远。该宏将检测限制并绘制图:
Sub Macro1()
Dim N As Long
N = Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("A1:A" & N)
ActiveChart.ChartType = xlXYScatter
End Sub
答案 1 :(得分:0)
听起来您已经将宏录制器用于上面描述的带有图表的项目。那里可能有一行代码如下:
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$B$350")
或
ActiveChart.FullSeriesCollection(1).Values = "=Sheet1!$A$1:$B$350"
如果您知道您的数据范围将从某个地点开始,让我们说$ A $ 1,那么您可以使用Range.End方法查找数据范围的结尾并指定数据图表的范围。
例如:
您的数据以1澳元起价并且下降了许多行,但您不知道有多少行。上面的第一行代码变为:
Activechart.SetSourceData Source:=Range(Range("A1"), Range("A1").End(xlDown))
相反,上面的第二行将更改为:
ActiveChart.FullSeriescollection(1).Values = Range(Range("A1"), Range("A1").End(xlDown))
最后,如果您想让宏询问您指定的范围,可以使用输入框来获取范围。将这些行添加到代码的顶部:
Dim Rng As Range
Set Rng = Application.InputBox("Please select the range for the chart.", Type:=8)
然后,上面两行成为:
ActiveChart.SetSourceData Source:=Rng
或
ActiveChart.FullSeriesCollection(1).Values = Rng
希望有所帮助! -Matt,来自www.ExcelArchitect.com