如何创建可以检测数据的宏?

时间:2015-03-05 21:04:35

标签: excel excel-vba vba

下午好!

我希望你可以帮我使用Excel Macros:我对这一切都很陌生(我喜欢使用Excel,但我知道的方式太少了)我已经被分配了一个工作项目,需要我制作工作簿上的一个宏,并使它做几个简单的任务,比如用公式创建新列,创建数据透视表,创建图表等......

我的问题是,现在我已经拥有了所有这些,我意识到如果下一个图表(每6个月左右会有一个图表)甚至还有一个我创建宏的那一行,它将会被排除在外。

所以我想找到的是一种基本告诉宏的方法:不只是从$ A $ 1到$ $ $ 350获取数据,而是将所有单元格中包含数据。因此,如果我自动添加一行"看到"它需要1美元兑换BA $ 351 $。某种"看下一行。如果有数据,请接受。如果没有,请停在这里"。 (对于该栏也是如此)。

我希望这是有道理的,如果它感到困惑我表示道歉,我花了很长时间研究这个问题,我实在很困惑。如果您需要更多信息,请不要问我,并提前感谢您的帮助!!

安东尼

(PS:它可能不重要,但为了以防万一,我在Excel 2013上工作,用于PC)。

2 个答案:

答案 0 :(得分:1)

这是一个非常简单的例子,你可以适应。假设我们有以下数据:

enter image description here

但我们不知道数据会走多远。该宏将检测限制并绘制图:

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

enter image description here

答案 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