OK I think I've understood correctly what you want to do. I've commented the macro (in module 3) to try to explain what the macro does.
I've listed each of the Areas in cells A1:A11 on a sheet called Data. The macro loops through each of the Areas, goes to the DataDrop sheet and loops through each row, copying the values to .1 sheet if the active row is for the current Area.
You'll notice I've looped through all rows for each of the Areas. Assuming the DataDrop sheet is nicely sorted by Area, then it would be quicker to find the first occurence for each Area then loop until you come to a blank row (as you suggested). But because there are only 400 rows on the DataDrop sheet, it only takes a moment to run.
The file wouldn't upload, so the code is below. I should point out that I'm using Excel 2003.
Dion
Sub CopyData()
Application.ScreenUpdating = False
Dim varArea As String
Dim varStore As String
Dim varSourceRow As Integer
Dim varTargetRow As Integer
Dim varLastRow As Integer
'Clear range on sheet .1
Sheets(".1").Range("A3:L5000").Value = ""
'Determine the total number of rows on DataDrop sheet
Sheets("DataDrop").Select
varLastRow = Cells(5000, 1).End(xlUp).Row
'Set top row for DataDrop and .1 sheets
varSourceRow = 2
varTargetRow = 3
Sheets("Data").Select
Range("A2").Select
Do 'Loop through each Area on Data sheet
varArea = ActiveCell.Value
Sheets("DataDrop").Select
varSourceRow = 2 'reset varSourceRow for the next Area
Do 'Loop through all rows on DataDrop sheet and copy if it's for the current Area
Cells(varSourceRow, 1).Select
If ActiveCell.Offset(0, 1).Value = varArea Then
varStore = ActiveCell.Value
Range(Cells(varSourceRow, 4), Cells(varSourceRow, 13)).Select
Selection.Copy
Sheets(".1").Select
Range(Cells(varTargetRow, 3), Cells(varTargetRow, 12)).PasteSpecial (xlPasteValues)
Cells(varTargetRow, 1).Value = varArea
Cells(varTargetRow, 2).Value = varStore
Sheets("DataDrop").Select
varSourceRow = varSourceRow + 1
varTargetRow = varTargetRow + 1
Else
varSourceRow = varSourceRow + 1
End If
Loop While ActiveCell.Row < varLastRow
Sheets("Data").Select
ActiveCell.Offset(1, 0).Select
Loop Until ActiveCell.Value = ""
Sheets(".1").Select
Range("A1").Select
End Sub
Bookmarks