title: Creating multiple graphs from a large data set using VBA looping
body: <p>I am trying to create a macro in VBA that will take a large data set in Sheet1 (called Raw Data) and create a XY scatter plot for every 8000 data points in another worksheet. The macro will also need to label each graph with what range it represents (ie 1-8000, 8001-16000 etc). </p>
  
  <p>The large data set consists of temperature readings from 8 different thermocouples which record data every second. The number of data points will vary based on how long the experiment was run. The temperature values are stored in columns C through J and the time parameter is in column T.</p>
  
  <p>What I have right now is a "batch" approach where the macro is set up to graph data in chunks of 8000 up to 32000 (4 different plots). This approach is not practical because the data set will almost always be significantly larger than 32000 points. </p>
  
  <p>What I would like the macro to do is automatically graph and label every 8000 data points until there is no more data to graph. </p>
  
  <p>I have been looking into using a loop but I am new to writing code and not sure how.</p>
  
  <p>Any suggestions or help is greatly appreciated!</p>
  
  <p>Here's some of my batch code:</p>
  
  <pre><code>'creates graph for first 8000 seconds in TC 1
  
  Sheets("TC 1").Select
  ActiveSheet.Shapes.AddChart.Select
  ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
  ActiveChart.SeriesCollection.NewSeries
  ActiveChart.SeriesCollection(1).Name = "='Raw Data'!$C$1"
  ActiveChart.SeriesCollection(1).XValues = "='Raw Data'!$t$2:$t$8000"
  ActiveChart.SeriesCollection(1).Values = "='Raw Data'!$C$2:$C$8000"
  
  With ActiveChart
  
  'X axis name
  .axes(xlCategory, xlPrimary).HasTitle = True
  .axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (seconds)"
  'y-axis name
  .axes(xlValue, xlPrimary).HasTitle = True
  .axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Temperature (F)"
  
  'chart title
  .HasTitle = True
  .ChartTitle.Text = ("1-8000 seconds")
  'adjusts the size/placement of graph and x-axis values
   Set RngToCover = ActiveSheet.Range("A1:T25")
   Set ChtOb = ActiveChart.Parent
   ChtOb.Height = RngToCover.Height ' resize
   ChtOb.Width = RngToCover.Width ' resize
   ChtOb.Top = RngToCover.Top ' repositon
   ChtOb.Left = RngToCover.Left ' reposition
   ActiveChart.axes(xlCategory).Select
   ActiveChart.axes(xlCategory).MinimumScale = 0
   ActiveChart.axes(xlCategory).MaximumScale = 8000
  
  End With
  </code></pre>